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

时间:2014-08-29 18:20:16

标签: javascript jquery browser-extension

现在很多网页都有自定义Javascript来执行页面加载。他们要么修改页面内容,要么加载外部小部件。

我的扩展程序尝试读取DOM并在页面中插入一些数据。但是在页面有自己的Javascript的某些情况下,我的扩展在页面Javascript之前执行。

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

1 个答案:

答案 0 :(得分:0)

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

$(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处理程序异步执行 )。为了解决这个问题,你需要一个模式,但它可能会超调。