后台传来一段 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(){}),这种方式会执行。 |