translate

划词翻译

目前為 2016-06-30 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name translate
  3. // @namespace https://lufei.so
  4. // @grant GM_xmlhttpRequest
  5. // @description 划词翻译
  6. // @version 1.1
  7. // ==/UserScript==
  8.  
  9. var panel = document.createElement('div');
  10. panel.style.position = 'fixed';
  11. panel.style.zIndex = 999;
  12. panel.style.display = 'none';
  13. panel.style.border = '1px solid #eaeaea';
  14. panel.style.backgroundColor = '#fff';
  15. panel.style.borderRadius = '4px';
  16. panel.style.padding = '.5rem 1rem';
  17. panel.style.fontFamily = 'monospace, consolas';
  18. panel.style.fontSize = '14px';
  19. panel.style.color = '#555';
  20. panel.style.textAlign = 'left';
  21. document.body.appendChild(panel);
  22. var sel, text, show = true;
  23.  
  24. document.addEventListener('mousedown', function(e) {
  25. if (e.buttons != 2) {
  26. if (sel) sel.removeAllRanges();
  27. }
  28. });
  29.  
  30. document.addEventListener('mouseup', function(e) {
  31. sel = window.getSelection();
  32. text = sel.toString();
  33. if (e.target === panel || panel.contains(e.target)) return;
  34. panel.style.display = 'none';
  35. panel.innerHTML = '';
  36. if (text != '' && !/^\s+$/.test(text)) {
  37. GM_xmlhttpRequest({
  38. method: 'GET',
  39. url: 'https://fanyi.youdao.com/openapi.do?relatedUrl=http%3A%2F%2Ffanyi.youdao.com%2Fopenapi%3Fpath%3Dweb-mode&keyfrom=test&key=null&type=data&doctype=json&version=1.1&q=' + window.encodeURIComponent(text),
  40. onload: function(event) {
  41. var data = JSON.parse(event.responseText),
  42. s = '';
  43. if (data.errorCode === 0) {
  44. if (data.basic) {
  45. s += '<div>' + data.translation[0] + '<span>[' + data.basic.phonetic + ']</span>' + '</div>';
  46. data.basic.explains.forEach(function(e) {
  47. s += '<div>' + e + '</div>';
  48. });
  49. } else {
  50. s += '<div>' + data.translation[0] + '</div>';
  51. }
  52. panel.innerHTML = s;
  53. panel.style.top = e.clientY + 10 + 'px';
  54. panel.style.left = e.clientX + 'px';
  55. panel.style.display = 'block';
  56. }
  57. }
  58. });
  59. }
  60. });

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址