为什么我的用户脚本仅在调试后才能工作?

时间:2019-11-29 00:40:10

标签: javascript tampermonkey

我正在尝试在某些网站上运行用户脚本。目的是复制有关在线词典中搜索到的每个单词的信息。我的浏览器是Chrome,我使用的是Tampermonkey扩展程序。我的代码无法正常工作,我也不知道是什么原因,因为控制台上没有出现错误。但是,如果我通过在代码中插入debugger来停止代码执行,然后在Chrome Developer Tools中单击“恢复代码执行”,即使我不做任何更改,代码也可以正常工作。为什么会这样呢?我该如何解决?这是我的代码,以及Tampermonkey标准用户脚本代码:

(function() {(function(context, fapply, console) {with (context) {(function(module) {"use strict";try {
fapply(module, context, [,,context.CDATA,context.uneval,context.define,context.module,context.exports,context.GM,context.GM_info]);} catch (e) {if (e.message && e.stack) {console.error("ERROR: Execution of script 'StudyFacilitator' failed! " + e.message);console.log(e.stack.replace(/(\\(eval at )?<anonymous>[: ]?)|([\s.]*at Object.tms_[\s\S.]*)/g, ""));} else {console.error(e);}}
})(function (context,fapply,CDATA,uneval,define,module,exports,GM,GM_info) {

// ==UserScript==
// @name         StudyFacilitator
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Copy automatically the info about each word searched.
// @author       Bruno M. B. Sdoukos
// @match        https://www.wordreference.com/enpt/*
// @grant        none
// ==/UserScript==

(function(){
    'use strict'

    // My code starts here

    let wordData = {word: '', meaning: '', translation: ''};
    wordData.word += document.querySelector('#articleHead > .headerWord').innerText + ' ' + document.querySelector('#pronWR').innerText;

    const tooltips = document.querySelectorAll('.tooltip');
    for (let i = 0; i < tooltips.length; i++) {
        tooltips[i].style.display = 'none';
    }

    let wordUnits = document.querySelectorAll('tr[id^="enpt:"]');
    let loopsNumber = wordUnits.length < 3 ? wordUnits.length : 3
    for (let i = 0; i < loopsNumber; i++) {
        wordData.meaning += wordUnits[i].querySelector('td:nth-child(2)').innerText + '; ';
        let firstTranslation = wordUnits[i].querySelector('.ToWrd');
        wordData.translation += firstTranslation.innerText + '; '
        let secondTranslation = wordUnits[i].nextElementSibling.querySelector('.ToWrd');
        if (secondTranslation !== null) {
            wordData.translation += secondTranslation.innerText + '; '
        }
    }
    wordData = wordData.word + ' | ' + wordData.meaning + ' | ' + wordData.translation;

    for (let i = 0; i < tooltips.length; i++) {
        tooltips[i].style.display = 'initial';
    }

    let textBox = document.createElement('textarea');
    document.querySelector('body').appendChild(textBox);
    let text = document.createTextNode(wordData);
    textBox.appendChild(text);
    textBox.select();
    document.execCommand('copy');
    document.querySelector('body').removeChild(textBox);

    // My code ends here

})()
})}})(this.context, this.fapply, this.console);
//# sourceURL=chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/userscript.html?id=4cf965a9-a02e-49c2-b22d-fecc7d272440
}).apply(window["__u__3218613.1053551002_"])

0 个答案:

没有答案