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。