关于 js 的一点疑问

2019-08-02 16:18:40 +08:00
 zhuwd

后台传来一段 html 代码,这段代码里面嵌入了 js:

<html>
<head>
</head>
<body>
     /***/
     <script>
        window.onload = function () {
            alert("页面加载完成====》 onload");
        }
    </script>
</body>
</html>

前台使用 window.write 将后台传过来的 html 写入到页面上,但是里面的 window.onload 并没有执行,需要手动调用 window.onload();

请教大佬们这其中的原理是什么?

3048 次点击
所在节点    JavaScript
11 条回复
DoveAz
2019-08-02 16:27:08 +08:00
这能有啥原理啊,你直接写在当前页面,当前页面已经 onload 过了呗,你在新页面打开这段代码才行
ashong
2019-08-02 16:29:33 +08:00
写入代码的时候页面已经加载完了,onload 已经触发过
cococoder
2019-08-02 16:49:30 +08:00
直接插入整个 html,并不会重新执行啊,这个跟重新加载页面不一样,已经 onload 过了
beastk
2019-08-02 16:57:59 +08:00
试试<img src=1 onerror=alert('onload')>
Caballarii
2019-08-02 17:00:06 +08:00
what are you neng 啥嘞
shintendo
2019-08-02 17:03:16 +08:00
事件又不是 promise,事件错过了就错过了
mamahaha
2019-08-02 17:04:21 +08:00
```js
window.addEventListener("DOMContentLoaded",()=>{
alert("页面加载完成====》 onload");
})
```
Takamine
2019-08-02 17:16:05 +08:00
比较好奇这是个什么业务场景。:dog:
phxsuns
2019-08-02 17:33:31 +08:00
你们的技术方案怕是有问题。。。
zhuwd
2019-08-02 17:42:57 +08:00
业务一言难进,是跟京东的合作。。感谢几位老哥!
greenman0007
2019-08-02 18:08:08 +08:00
1. 你直接加载的话,后台写过来的 HTM L 应该不要带 <html><head><body> 标签;
2. 如果页面有引入 jQuery 的话,后台可以用 $(function(){}),这种方式会执行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/588566

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX