javascript中的document.getDocumentById返还null

1. 背景

我想做一个起点自动投推荐票的firefox插件,希望插件自己点击投推荐票dialog中的提交button,

但是我使用document.getDocumentById一直返回的是null,然后我就查找原因。

2.
最后发现投推荐票的dialog是用iframe实现的,但是当前的页面属于另外一个iframe,它的document中根本没有提交button的id(btn_OK)。

所以只能对当前所有的frame进行遍历,一个一个的找,如果找到的话调用click方法就好了,以下是方法的原型:

var targetId = "btn_OK"
var target = document.getElementById(targetId);
if(target != null) {
    //do something
}
var iframes = document.getElementsByTagName('iframe'); //all iframes on page
console.log("total frame " + iframes.length);
var errCount = 0;
for(var i=0; i<iframes.length; i++){
    console.log("current frame is: " + iframes[i]);
    var iframeDocument;
    try {
        iframeDocument = iframes[i].contentDocument || iframes[i].contentWindow.document;
        target = iframeDocument.getElementById(targetId);
        console.log(target);
        }
    catch (err){
        errCount ++;
        console.log(err);
    }    
}

因为不同的iframe有可能是不同的domain的,所有需要try catch。