var timer;
function check_element_load(){
timer = window.setInterval(function(){
console.log("still working"); // keeps running forever
if(document.getElementById("comments")){
console.log("FOUND"); // this actually runs
document.getElementsByTagName("fb:comments")[0].setAttribute('order_by', 'social');
window.clearInterval(timer); // < not effective
}
}, 50);
}
check_element_load();
我正在尝试将一个脚本置于顶部以继续检查特定元素是否已在浏览器中成功加载,它可以(控制台记录“FOUND”),但是当我写的时候另一个控制台日志,以查看间隔是否仍在运行。确实如此,它永远不会停止,clearInterval
完全被忽略
有什么我错过的吗?我也试过使用所有其他解决方案,包括settimeout,现在最接近我的是写的,我只是希望clearinterval在条件返回true后生效
有什么类似于clearinterval更有效,杀死整个函数或什么?
答案 0 :(得分:0)
目前,您的code is logical correct,但是如果
document.getElementsByTagName("fb:comments")[0].setAttribute('order_by', 'social');
抛出错误,(当然)超时将never be cleared。你可以use SetTimeout
instead。
最有可能调用getElementsByTagName("fb:comments")
返回一个空集,给你一个“方法setAttribute在Element undefined上不存在”Type Error。