// ==UserScript==
// @name 剑桥查词
// @namespace https://ld246.com/article/1760544378300
// @version 1.0.2
// @description 在任意网页选中英文后查询剑桥词典,支持发音、全球真人发音、钉住窗口和本地生词本。
// @author wish163
// @match http://*/*
// @match https://*/*
// @connect dictionary.cambridge.org
// @connect dict.eudic.net
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_registerMenuCommand
// @grant GM_openInTab
// @grant unsafeWindow
// @run-at document-idle
// @license MIT
// @noframes
// ==/UserScript==
(() => {
'use strict';
const CONFIG = {
autoRead: true,
autoReadRegion: 'us',
queryWhenPinned: true,
maxWords: 3,
showSponsor: false,
// false 时不显示选词悬浮按钮,仍可通过 cambridgeDictionary.lookup() 查词
showSelectionButton: true,
};
const CAMBRIDGE = 'https://dictionary.cambridge.org';
const EN_ZH_PATH = 'dictionary/english-chinese-simplified';
const EN_PATH = 'dictionary/english';
const WORDS_KEY = 'cambridge-browser-wordbook';
const STATE_KEY = 'cambridge-browser-state';
const FAVICON = `${CAMBRIDGE}/zhs/external/images/favicon.ico`;
const speakerIcon = `
`;
const globeIcon = `
`;
const moonIcon = ``;
const sunIcon = ``;
let lastSelection = '';
let selectionRange = null;
let pinned = false;
let theme = window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
let requestSerial = 0;
let currentAudio = null;
let dragState = null;
const host = document.createElement('div');
host.id = 'browser-cambridge-dictionary-host';
const root = host.attachShadow({ mode: 'open' });
// 构造样式表不依赖内联