如何在加载后立即修改HTML元素?

时间:2014-08-19 16:35:12

标签: javascript jquery html firefox greasemonkey

如果页面无法完全加载,或者加载速度非常慢,则$(document).ready()功能不是很好。

如何在创建元素后立即对其进行修改?一些延迟是好的,只要它不是多秒。

如果重要的话,我也在使用Greasemonkey。但我也会对Greasemonkey以外的解决方案感兴趣。

我也不想打破网页上的表现。

编辑:我不拥有我修改的网站。因此我无法手动输入任何代码。

我尝试了window.onload = function(){}而不是$(document).ready(function(){}),但我注意到jquery版本的速度是原来的两倍。

看起来人们在投票之前并不理解问题。

1 个答案:

答案 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";
}

确保 将其置于任何onloadondomready / $(document).ready()事件处理程序中。

加载此脚本后,它将检查每25毫秒是否存在id foo的元素。一旦成功找到foo,它就会停止搜索并运行函数doStuff。现在,我不知道你想要修改的内容是否实际上有id,所以你必须弄清楚如何搜索它。

我确定你知道这一点,但我想提一下,间隔运行的次数在很大程度上取决于在html文档中加载脚本的位置。例如,如果它位于文档的底部,则它只能运行一次。如果它在标题中,它将在加载foo之前运行。

这是working example with JSFiddle