后台传来一段 html 代码,这段代码里面嵌入了 js:
<html>
<head>
</head>
<body>
/***/
<script>
window.onload = function () {
alert("页面加载完成====》 onload");
}
</script>
</body>
</html>
前台使用 window.write 将后台传过来的 html 写入到页面上,但是里面的 window.onload 并没有执行,需要手动调用 window.onload();
请教大佬们这其中的原理是什么?
1
DoveAz 2019-08-02 16:27:08 +08:00
这能有啥原理啊,你直接写在当前页面,当前页面已经 onload 过了呗,你在新页面打开这段代码才行
|
2
ashong 2019-08-02 16:29:33 +08:00
写入代码的时候页面已经加载完了,onload 已经触发过
|
3
cococoder 2019-08-02 16:49:30 +08:00
直接插入整个 html,并不会重新执行啊,这个跟重新加载页面不一样,已经 onload 过了
|
4
beastk 2019-08-02 16:57:59 +08:00 via iPhone
试试<img src=1 onerror=alert('onload')>
|
5
Caballarii 2019-08-02 17:00:06 +08:00
what are you neng 啥嘞
|
6
shintendo 2019-08-02 17:03:16 +08:00
事件又不是 promise,事件错过了就错过了
|
7
mamahaha 2019-08-02 17:04:21 +08:00
```js
window.addEventListener("DOMContentLoaded",()=>{ alert("页面加载完成====》 onload"); }) ``` |
8
Takamine 2019-08-02 17:16:05 +08:00
比较好奇这是个什么业务场景。:dog:
|
9
phxsuns 2019-08-02 17:33:31 +08:00
你们的技术方案怕是有问题。。。
|
10
zhuwd OP 业务一言难进,是跟京东的合作。。感谢几位老哥!
|
11
greenman0007 2019-08-02 18:08:08 +08:00
1. 你直接加载的话,后台写过来的 HTM L 应该不要带 <html><head><body> 标签;
2. 如果页面有引入 jQuery 的话,后台可以用 $(function(){}),这种方式会执行。 |