如何在本机页面javascript执行完毕后执行扩展代码

How to execute extension code after native page javascript finishes executing?

本文关键字:执行 扩展 代码 javascript 本机      更新时间:2023-09-26

如今,许多网页都有自定义的Javascript来执行页面加载。它们要么修改页面内容,要么加载外部小部件。

我的扩展尝试读取DOM并在页面中插入一些数据。然而,在某些情况下,如果页面有自己的Javascript,我的扩展会在页面Javascript之前执行。

因此,页面Javascript可能会覆盖我的插入或插入我的扩展无法读取的数据。在页面Javascript函数加载/执行之后,我如何才能等待执行我的扩展?

也许这会有所帮助,但它有一些不希望的副作用:

$(function () {
    setTimeout(function () {
        alert("At last!");
    }, 1000); // 1000 millis after page loaded and most probably all onload handlers have been run
});

主要的副作用是它将在1000毫秒后执行,因此在这段时间内,用户将看到未处理的页面,然后您的脚本将对其进行操作。在这种情况下,这可能会变得丑陋,并损害用户的体验。


编辑:

你也可以试试这个。在主体的一端(内部,但最后)添加以下脚本标记:

<script>
    $(function () { alert("LAST!"); });
</script>

根据脚本执行的规则以及jQuery遵循通过$(function () { ... });习惯用法添加onload处理程序的顺序,您可以非常确定您的代码是最后执行的。问题是,任何异步执行,如AJAX回调处理程序,都将无序执行(即,相对于形成责任链window.onload处理程序异步执行)。为了应对这种情况,你需要一个模式,但它可能太过了。