在我正在查看的网页上,有大量数据正在异步加载。
该数据中包含一个名为“查看更多”的按钮。如果您单击按钮或直接向右滚动到底部,将通过“GET”调用函数加载更多数据。
当我尝试使用它时(在 FireBug 控制台中):
document.getElementById('#button9').click();
或
document.getElementById('button9').click();
我得到这个结果:
TypeError: document.getElementById(...) is null
document.getElementById('#button9').click();
根据我读到的有关此 TypeError 的信息,无法检测到 Id,我认为这是因为数据是异步的。有没有办法检测该元素(它不会显示在“页面源”上,但当我单击“使用 FireBug 检查元素”时它就在那里)?
我想检测该元素,然后调用单击事件来“模拟单击”(这意味着我希望在不单击按钮或向下滚动的情况下进行单击)并显示输出在浏览器中(按照惯例)。
最佳答案
如果您只想附加事件,那么底部就可以了。
如果问题是它为空,并且您不知道它何时会出现,那么最好的选择是创建一个循环,运行直到它存在为止。
var obj = document.getElementById('button9');
obj.addEventListener('click', function() {
alert(' you clicked on ' + this);
}, false);
如果是第二个实例,并且您想等到对象事件发生,则使用:
checkExists();
function checkExists() {
var obj = document.getElementById('button9');
if (obj != null) {
obj.addEventListener('click', function() {
alert(' you clicked on ' + this);
}, false);
alert('added event');
}
else {
setTimeout(checkExists, 1000);
}
}
关于javascript - 检测异步加载的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20432446/