如果页面无法完全加载,或者加载速度非常慢,则$(document).ready()
功能不是很好。
如何在创建元素后立即对其进行修改?一些延迟是好的,只要它不是多秒。
如果重要的话,我也在使用Greasemonkey。但我也会对Greasemonkey以外的解决方案感兴趣。
我也不想打破网页上的表现。
编辑:我不拥有我修改的网站。因此我无法手动输入任何代码。
我尝试了window.onload = function(){}
而不是$(document).ready(function(){})
,但我注意到jquery版本的速度是原来的两倍。
看起来人们在投票之前并不理解问题。
答案 0 :(得分:1)
我误解了你的问题,所以我完全重写了我的答案。
如果$(document).ready()
对你来说太慢,那么onload
肯定对你来说太慢了。没有代码片段,我不能给你一些特定的东西,但这应该适合你:
var checkIfExists = setInterval(function() {
var exists = document.getElementById("foo");
if (exists) {
clearInterval(checkIfExists);
doStuff(exists);
}
}, 25);
function doStuff(element) {
element.innerHTML = "bar";
}
确保 不 将其置于任何onload
或ondomready
/ $(document).ready()
事件处理程序中。
加载此脚本后,它将检查每25毫秒是否存在id
foo
的元素。一旦成功找到foo
,它就会停止搜索并运行函数doStuff
。现在,我不知道你想要修改的内容是否实际上有id
,所以你必须弄清楚如何搜索它。
我确定你知道这一点,但我想提一下,间隔运行的次数在很大程度上取决于在html文档中加载脚本的位置。例如,如果它位于文档的底部,则它只能运行一次。如果它在标题中,它将在加载foo
之前运行。