支持美式英语、英式英语发音
This commit is contained in:
parent
0d55cb463e
commit
13ac2ae77d
|
@ -1,7 +1,7 @@
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 划词翻译:有道词典,金山词霸
|
// @name 划词翻译:有道词典,金山词霸
|
||||||
// @namespace http://tampermonkey.net/
|
// @namespace http://tampermonkey.net/
|
||||||
// @version 0.5
|
// @version 0.6
|
||||||
// @description 划词翻译调用“有道词典(有道翻译)、金山词霸”
|
// @description 划词翻译调用“有道词典(有道翻译)、金山词霸”
|
||||||
// @author https://github.com/barrer
|
// @author https://github.com/barrer
|
||||||
// @match http://*/*
|
// @match http://*/*
|
||||||
|
@ -67,9 +67,10 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}];
|
}];
|
||||||
// 翻译图标、内容面板
|
// 翻译图标、内容面板、当前选中
|
||||||
var icon = document.createElement('div'),
|
var icon = document.createElement('div'),
|
||||||
content = document.createElement('div');
|
content = document.createElement('div'),
|
||||||
|
text;
|
||||||
// 绑定图标拖动事件
|
// 绑定图标拖动事件
|
||||||
var iconDrag = new Drag(icon);
|
var iconDrag = new Drag(icon);
|
||||||
iconArray.forEach(function (obj) {
|
iconArray.forEach(function (obj) {
|
||||||
|
@ -79,8 +80,10 @@
|
||||||
img.setAttribute('title', obj.name);
|
img.setAttribute('title', obj.name);
|
||||||
img.addEventListener('mouseup', function () {
|
img.addEventListener('mouseup', function () {
|
||||||
if (iconDrag.elementOriginalLeft == parseInt(icon.style.left) &&
|
if (iconDrag.elementOriginalLeft == parseInt(icon.style.left) &&
|
||||||
iconDrag.elementOriginalTop == parseInt(icon.style.top)) // 没有拖动鼠标抬起的时候触发点击事件
|
iconDrag.elementOriginalTop == parseInt(icon.style.top)) { // 没有拖动鼠标抬起的时候触发点击事件
|
||||||
obj.trigger(window.getSelection().toString().trim()); // 启动翻译引擎
|
text = window.getSelection().toString().trim();
|
||||||
|
obj.trigger(text); // 启动翻译引擎
|
||||||
|
}
|
||||||
});
|
});
|
||||||
img.setAttribute('style', '' +
|
img.setAttribute('style', '' +
|
||||||
'cursor:pointer!important;' +
|
'cursor:pointer!important;' +
|
||||||
|
@ -217,35 +220,89 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**ajax 跨域访问公共方法*/
|
/**ajax 跨域访问公共方法*/
|
||||||
function ajax(url, success, error, element, method, data, headers) {
|
function ajax(url, success, error, obj) {
|
||||||
if (!!!method)
|
if (!!!obj)
|
||||||
method = 'GET';
|
obj = {};
|
||||||
|
if (!!!obj.method)
|
||||||
|
obj.method = 'GET';
|
||||||
// >>>因为Tampermonkey跨域访问(a.com)时会自动携带对应域名(a.com)的对应cookie
|
// >>>因为Tampermonkey跨域访问(a.com)时会自动携带对应域名(a.com)的对应cookie
|
||||||
// 不会携带当前域名的cookie
|
// 不会携带当前域名的cookie
|
||||||
// 所以,GM_xmlhttpRequest【不存在】cookie跨域访问安全性问题
|
// 所以,GM_xmlhttpRequest【不存在】cookie跨域访问安全性问题
|
||||||
// 以下设置默认headers不起作用<<<
|
// 以下设置默认headers不起作用<<<
|
||||||
if (!!!headers)
|
if (!!!obj.headers)
|
||||||
headers = {
|
obj.headers = {
|
||||||
'cookie': ''
|
'cookie': ''
|
||||||
};
|
};
|
||||||
GM_xmlhttpRequest({
|
GM_xmlhttpRequest({
|
||||||
method: method,
|
method: obj.method,
|
||||||
url: url,
|
url: url,
|
||||||
headers: headers,
|
headers: obj.headers,
|
||||||
data: data,
|
responseType: obj.responseType,
|
||||||
|
data: obj.data,
|
||||||
onload: function (res) {
|
onload: function (res) {
|
||||||
success(res.responseText, element);
|
success(res.responseText, res, obj);
|
||||||
},
|
},
|
||||||
onerror: function (res) {
|
onerror: function (res) {
|
||||||
error(res.responseText, element);
|
error(res.responseText, res, obj);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/**显示内容面板*/
|
/**显示内容面板*/
|
||||||
function showContent(html) {
|
function showContent(html) {
|
||||||
|
// 发音
|
||||||
|
var audio = document.createElement('div'),
|
||||||
|
us = document.createElement('a'),
|
||||||
|
uk = document.createElement('a'),
|
||||||
|
space = document.createElement('span'),
|
||||||
|
style = '';
|
||||||
|
style += 'color:#36f!important;';
|
||||||
|
style += 'text-decoration:none!important;';
|
||||||
|
style += 'cursor:pointer!important;';
|
||||||
|
us.innerHTML = '♪US';
|
||||||
|
us.setAttribute('href', 'javascript:void(0)');
|
||||||
|
us.addEventListener('click', playUS);
|
||||||
|
// us.addEventListener('mouseover', playUS);
|
||||||
|
us.setAttribute('style', style);
|
||||||
|
uk.innerHTML = '♪UK';
|
||||||
|
uk.setAttribute('href', 'javascript:void(0)');
|
||||||
|
uk.addEventListener('click', playUK);
|
||||||
|
// uk.addEventListener('mouseover', playUK);
|
||||||
|
uk.setAttribute('style', style);
|
||||||
|
space.innerHTML = ' ';
|
||||||
|
audio.appendChild(us);
|
||||||
|
audio.appendChild(space);
|
||||||
|
audio.appendChild(uk);
|
||||||
|
// 翻译内容
|
||||||
content.innerHTML = html;
|
content.innerHTML = html;
|
||||||
|
content.insertBefore(audio, content.childNodes[0]);
|
||||||
content.style.display = 'block';
|
content.style.display = 'block';
|
||||||
}
|
}
|
||||||
|
/**美式发音*/
|
||||||
|
function playUS() {
|
||||||
|
var url = 'http://dict.youdao.com/dictvoice?audio=' + text + '&type=2';
|
||||||
|
var audio = new Audio();
|
||||||
|
ajax(url, function (rst, res) {
|
||||||
|
audio.src = URL.createObjectURL(res.response);
|
||||||
|
audio.play();
|
||||||
|
}, function (rst) {
|
||||||
|
log(rst);
|
||||||
|
}, {
|
||||||
|
responseType: 'blob'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**英式发音*/
|
||||||
|
function playUK() {
|
||||||
|
var url = 'http://dict.youdao.com/dictvoice?audio=' + text + '&type=1';
|
||||||
|
var audio = new Audio();
|
||||||
|
ajax(url, function (rst, res) {
|
||||||
|
audio.src = URL.createObjectURL(res.response);
|
||||||
|
audio.play();
|
||||||
|
}, function (rst) {
|
||||||
|
log(rst);
|
||||||
|
}, {
|
||||||
|
responseType: 'blob'
|
||||||
|
});
|
||||||
|
}
|
||||||
/**有道词典排版*/
|
/**有道词典排版*/
|
||||||
function parseYoudao(rst) {
|
function parseYoudao(rst) {
|
||||||
try {
|
try {
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 153 KiB After Width: | Height: | Size: 118 KiB |
Loading…
Reference in New Issue
Block a user