diff --git a/main.user.js b/main.user.js index 0bab8f729..763a7418f 100644 --- a/main.user.js +++ b/main.user.js @@ -129,6 +129,7 @@ switch (node.tagName) { case "RELATIVE-TIME": // 翻译时间元素 transTimeElement(node.shadowRoot); + watchTimeElement(node.shadowRoot); return; case "INPUT": @@ -249,17 +250,29 @@ */ function transTimeElement(el) { const text = el.childNodes.length > 0 ? el.lastChild.textContent : el.textContent; - const res = I18N[lang]['public']['time-regexp']; // 时间正则规则 - - for (let [a, b] of res) { - const translatedText = text.replace(a, b); - if (translatedText !== text) { - el.textContent = translatedText; - break; - } + const translatedText = text.replace(/^on/, ""); + if (translatedText !== text) { + el.textContent = translatedText; } } + /** + * watchTimeElement 函数:监视时间元素变化, 触发和调用时间元素翻译 + * @param {Element} el - 需要监视的元素。 + */ + function watchTimeElement(el) { + const MutationObserver = + window.MutationObserver || + window.WebKitMutationObserver || + window.MozMutationObserver; + + new MutationObserver(mutations => { + transTimeElement(mutations[0].addedNodes[0]); + }).observe(el, { + childList: true + }); + } + /** * transElement 函数:翻译指定元素的文本内容或属性。 * @param {Element|DOMStringMap} el - 需要翻译的元素或元素的数据集 (node.dataset)。