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

时间:2014-06-01 17:57:46

标签: 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);

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

  

未捕获的TypeError:无法读取未定义的属性“长度”

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

1 个答案:

答案 0 :(得分:1)

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

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