更快的UI响应

This commit is contained in:
example 2019-01-21 18:07:07 +08:00
parent 4efc39cd6d
commit 89bf369b5f

View File

@ -1,7 +1,7 @@
// ==UserScript== // ==UserScript==
// @name 划词翻译:多词典查询 // @name 划词翻译:多词典查询
// @namespace http://tampermonkey.net/ // @namespace http://tampermonkey.net/
// @version 1.7 // @version 1.8
// @description 划词翻译调用“有道词典有道翻译、金山词霸、Bing 词典必应词典、沪江小D、谷歌翻译” // @description 划词翻译调用“有道词典有道翻译、金山词霸、Bing 词典必应词典、沪江小D、谷歌翻译”
// @author https://github.com/barrer // @author https://github.com/barrer
// @match http://*/* // @match http://*/*
@ -109,9 +109,12 @@
tr-content { tr-content {
display: block; display: block;
max-width: 400px; max-width: 300px;
max-height: 200px; max-height: 200px;
overflow: auto; width: 300px;
height: 200px;
overflow-x: auto;
overflow-y: scroll;
background: white; background: white;
padding: 2px 8px; padding: 2px 8px;
margin-top: 5px; margin-top: 5px;
@ -416,7 +419,7 @@
obj[ids.BING] = '《Bing 词典》'; obj[ids.BING] = '《Bing 词典》';
obj[ids.BING_LOWER_CASE] = ''; obj[ids.BING_LOWER_CASE] = '';
obj[ids.HJENGLISH] = '《沪江小D》'; obj[ids.HJENGLISH] = '《沪江小D》';
obj[ids.GOOGLE] = ''; obj[ids.GOOGLE] = '《谷歌翻译》';
return obj; return obj;
})() })()
} }
@ -519,6 +522,8 @@
if (!isDrag()) { // 没有拖动鼠标抬起的时候触发点击事件 if (!isDrag()) { // 没有拖动鼠标抬起的时候触发点击事件
if (engineId == obj.id) if (engineId == obj.id)
return; // 已经是当前翻译引擎 return; // 已经是当前翻译引擎
else
cleanContent(); // 清空之前翻译结果
engineId = obj.id; // 翻译引擎 ID engineId = obj.id; // 翻译引擎 ID
engineActivateShow(); // 显示翻译引擎指示器 engineActivateShow(); // 显示翻译引擎指示器
audioEngines = []; // 清空发音引擎 audioEngines = []; // 清空发音引擎
@ -780,12 +785,12 @@
/**显示内容面板*/ /**显示内容面板*/
function showContent(idsType) { function showContent(idsType) {
log('showContent:', idsType, engineResult); log('showContent:', idsType, engineResult);
if (!isAllDone(idsType)) { if (isAllDone(idsType)) {
log('showContent return'); log('showContent allDone');
return;
} }
log('showContent rendering'); log('showContent rendering');
// 发音 // 发音
audioEngines = []; // 清空防止多次渲染
audioEngines.push({ audioEngines.push({
name: '♪US', name: '♪US',
url: 'http://dict.youdao.com/dictvoice?audio=' + selected + '&type=2' url: 'http://dict.youdao.com/dictvoice?audio=' + selected + '&type=2'
@ -810,7 +815,7 @@
} }
} }
idsType.forEach(function (id) { idsType.forEach(function (id) {
if (!(id in needDel)) { if (engineResult[id] && !(id in needDel)) {
if (idsExtension.names[id]) { if (idsExtension.names[id]) {
var title = document.createElement('div'); var title = document.createElement('div');
title.innerHTML = idsExtension.names[id]; title.innerHTML = idsExtension.names[id];
@ -823,6 +828,9 @@
if (engineId != 'icon-google') { // 谷歌翻译不显示发音图标 if (engineId != 'icon-google') { // 谷歌翻译不显示发音图标
content.insertBefore(audio, content.childNodes[0]); content.insertBefore(audio, content.childNodes[0]);
} }
var largeHeight = document.createElement('div'); // 防止滚动条闪来闪去
largeHeight.style.height = '10000px';
content.appendChild(largeHeight);
content.style.display = 'block'; content.style.display = 'block';
content.scrollTop = 0; content.scrollTop = 0;
content.scrollLeft = 0; content.scrollLeft = 0;
@ -848,6 +856,13 @@
engineActivateHide(); engineActivateHide();
forceStopDrag(); forceStopDrag();
} }
/**清空翻译面板*/
function cleanContent() {
content.innerHTML = '';
var largeHeight = document.createElement('div'); // 防止滚动条闪来闪去
largeHeight.style.height = '10000px';
content.appendChild(largeHeight);
}
/**发音*/ /**发音*/
function play(obj) { function play(obj) {
if (isDrag()) { // 拖动时候不触发发音 if (isDrag()) { // 拖动时候不触发发音