我正在处理加载页面后需要更新页面文本的扩展。我在“ content_script ”中使用 window.onload 。
由于我需要对我的更改进行大量测试,因此我决定创建一个带有几段文字的小页面并将其放入我的网络服务器中。但是当这个页面加载时 - 扩展名的 window.onload不会触发,在任何其他网页上都可以正常运行。
我开始调查并发现这是因为页面加载速度。所以基本上页面加载比扩展代码更快。
通过在链接到外部网站的正文上添加背景图片,验证。像这样:
body
{
background: url(http://colourunity.com/img/2013/07/autumn-wallpaper-computer-14172-hd-widescreen-wallpapers.jpg) no-repeat;
}
因此页面的加载速度变慢,扩展程序有足够的时间加载并且 window.onload触发器。
当然我不担心扩展工作,因为当页面加载速度很快时,这种情况太少了。
但是仍然 - 无论如何都要绕过这个?
感谢。
答案 0 :(得分:1)
内容脚本的window
对象与您的页面不同。来自content script documentation:
值得注意的是,页面和扩展程序共享的JavaScript对象会发生什么 - 例如
window.onload
事件。 每个孤立的世界都会看到自己的对象版本。
因此,在内容脚本中侦听此事件将无法按照您的意图运行,因为它不是您想要的那个。
无论如何:您可以通过run_at
选项指定脚本执行的位置。例如,如果您选择在document_idle
运行它,那么您可以保证在页面的window.onload
事件后执行它。
换句话说,您可以直接停止使用window.onload
事件,并直接运行所需的代码。