javascript - 强制部分代码等待其他代码?

标签 javascript greasemonkey tampermonkey

我想知道是否可以阻止一个函数甚至定义自己(基本上我没有使用它,但它仍然定义自己,至少我认为问题是这样的)。

if (document.getElementById("loginLogoutButton").title!="התנתק/י") {          
    document.getElementById("username").value="asdf";
    document.getElementById("password").value="asdf";

    var target = document.getElementById("loginLogoutButton");
    var clickevent = document.createEvent("MouseEvents");
    clickevent.initEvent("click", true, true);
    target.dispatchEvent(clickevent);
}

function loaded() {
    var targLpink = document.getElementById ("iconImage_3");
    var clickEvent = document.createEvent ("MouseEvents");
    clickEvent.initEvent('dblclick', false, true);
    targLpink.dispatchEvent(clickEvent);
}
window.addEventListener("load", setTimeout(loaded,3000));

var msgodd;
var msgeven;
var messages;

//The first error happens here as far as I can tell
//"Uncaught TypeError: undefined is not a function"

function list() {
    msgeven = document.getElementsByTagName("even unread");
    msgodd= document.getElementsByTagName("odd unread");
    var k = msgodd.length+msgeven.length;
    confirm(k);
    var i = 0;
    while ((i+2)< k) {
        if (i%2==0 && i+2<msgeven.length){
            messages.push(msgeven[i/2].id);
        }
        if(i%2==1 && i+2<msgodd.length){
            messages.push(msgodd[(i-1)/2].id);
        }
        i=i+1;
    }
    alert(messages.length);
}
setTimeout(list, 9000);

然后我在标记名上收到错误:

Uncaught TypeError: Cannot read property 'length' of undefined

我也可能会抛出,因为我正在等待页面加载,所以我必须使用 setTimeout (这不是一个不同的地址,它会在自身内部打开一些东西,所以我不能在上面使用 onload - 在至少当我尝试失败时)。

最佳答案

您将 msgeven/msgodd 视为数组。但这是NodeList !您可以这样转换它们:

msgeven = Array.prototype.slice.call(document.getElementsByClassName("even unread"));
msgodd = Array.prototype.slice.call(document.getElementsByClassName("odd unread"));

关于javascript - 强制部分代码等待其他代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23982768/

相关文章:

javascript - 为什么 waitForKeyElements 对于 Google 搜索结果需要另一个超时?

javascript - 网站能否检测到使用简单的 Tampermonkey 脚本?

javascript - 想从表中获取所有元素

javascript - 在 react 中调用子函数?

javascript - 使用 ng-change 更新 Angular 模型

Jquery 选择器在用户脚本上返回 Null

javascript - 如何使用 Greasemonkey 在 javascript 中设置已创建事件的 `isTrusted` 属性

javascript - keydown 事件(TAB 键)修改元素值时未触发 Change 事件

javascript - for of 循环querySelectorAll

javascript - 使用 Greasemonkey 修改所有链接