繁体   English   中英

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

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

如今,许多网页都有自定义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处理程序的顺序这一事实$(function () { ... }); 成语,您可以确定代码最后执行。 问题在于,任何异步执行(例如AJAX回调处理程序)都将无序执行(即,相对于形成责任链window.onload处理程序而言是异步的)。 为了解决这个问题,您需要一个模式,但这可能是过冲的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM