Javascript 如何在加载HTML元素后立即修改它?
如果页面未能完全加载或加载速度非常慢,则Javascript 如何在加载HTML元素后立即修改它?,javascript,jquery,html,firefox,greasemonkey,Javascript,Jquery,Html,Firefox,Greasemonkey,如果页面未能完全加载或加载速度非常慢,则$(document).ready()函数不是很好 如何在元素创建后立即修改它?只要不是几秒钟,延迟一下就可以了 我也在用Greasemonkey,如果这很重要的话。但我也对一个在Greasemonkey之外有效的解决方案感兴趣 我也不想破坏网页上的性能 编辑:我不拥有我正在修改的网站。因此,我不能手动将任何代码放在那里 我尝试了window.onload=function(){}而不是$(document).ready(function(){}),但我注
$(document).ready()
函数不是很好
如何在元素创建后立即修改它?只要不是几秒钟,延迟一下就可以了
我也在用Greasemonkey,如果这很重要的话。但我也对一个在Greasemonkey之外有效的解决方案感兴趣
我也不想破坏网页上的性能
编辑:我不拥有我正在修改的网站。因此,我不能手动将任何代码放在那里
我尝试了
window.onload=function(){}
而不是$(document).ready(function(){})
,但我注意到jquery版本的速度是前者的两倍
看起来人们在投票被否决之前并没有理解这个问题。我误解了你们的问题,所以我完全重写了我的答案 如果
$(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
下面是一个。将
块放在要修改的元素后面。您是否尝试使用setinterval检查元素是否存在,然后将用户定义的属性设置为元素,然后为要由setinterval检查的特定元素创建一个用户定义的属性,以便能够终止setinterval在加载要修改的元素之后。@Barmar,那么我该怎么做呢?这个网站不是我的。@MikeAnte,你似乎是唯一一个真正理解我问题的人。除了按时间间隔检查外,还有其他方法吗?@Rookie也许你可以制作一张你正在修改的内容的小地图。我将能够为您提供修补解决方案。该网站不是我的。我不能简单地用手把东西放在那里。我尝试了window.onload=function(){}
而不是$(document).ready(function(){})
,但我注意到jquery版本的速度是原来的两倍。@Rookie我重新编写了我的答案,以正确地解决这个问题。对不起,我第一次误解了。是的,我想是的。如果你认为我的问题值得,也许你可以投我一票。我会接受这个/升级投票,因为这似乎是唯一的解决方案。@菜鸟,我之前已经升级了你的答案。如果更新问题,它将再次显示为活动状态,并可能获得更多视图。祝你好运:)