如何解决window.onload 未在注入的 Javascript 中触发?
我有一个 chrome 扩展程序,可以将 javascript 代码注入到这样的网页中
if (document.readyState === "complete") {
const html = `
<html>
<head>
<Meta charset="UTF-8">
</head>
<body>
<script type="text/javascript">
console.log(location.href);
function doStuff() {
console.log("do stuff");
}
console.log("onload");
window.onload = function () {
console.log("WINDOW LOADED");
doStuff();
}
</script>
</body>
</html>
`;
document.write(html);
}
但是,在我导航到页面并且扩展程序注入了 javascript 之后,我可以在控制台中看到它确实记录了 location.href
和 onload
,但是 window.onload
没有触发,而且我在控制台中没有看到 WINDOW LOADED
,也没有调用 doStuff()
。
我也试过使用
window.addEventListener('load',(event) => {
console.log('page is fully loaded');
});
以及
document.addEventListener('DOMContentLoaded',doStuff);
无济于事。 任何帮助将不胜感激,我一直无法找到任何有用的东西。
解决方法
我设法通过在我的 <script>
setTimeout(() => {
let evt = document.createEvent('Event');
evt.initEvent('load',false,false);
window.dispatchEvent(evt);
},300);
这现在导致 window.onload
触发。希望这可以帮助任何有同样问题的人
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。