在javascript中强制执行window.onload事件

use*_*684 4 javascript

好吧,我想根据一些答案重新考虑我的要求,它让人费解.我正在寻找的是,如果有一个javascript命令从父级的javascript中激活onload事件.一行代码,例如: document.getElementById('FrameID').fire.onload(); 或者如果不能这样做的话.

我正在集思广益一个应用程序,我将用url预加载一些iframe,比如10个.然后我将通过隐藏和显示帧来旋转它们.我希望能够在显示活动帧之后触发窗口onload事件而不重新加载页面,这样如果页面有onload事件,页面就会像新鲜一样.我可以这样做吗?页面可能有也可能没有窗口onload事件.

Mar*_*tke 13

这是重新发布load事件的当前方法:

dispatchEvent(new Event('load'));
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

浏览器兼容性

  • Chrome:15+
  • Firefox:11+
  • Microsoft Edge:所有版本
  • 歌剧:11.60+
  • Safari:6+
  • Internet Explorer:无(见Dave的回答)

  • 不起作用,呃,"浏览器"命名为Internet Explorer. (3认同)
  • Downvoted,因为这在IE中不起作用 - 请参阅链接中的文字:"大多数现代浏览器都支持此构造函数(Internet Explorer是例外).对于更详细的方法(适用于Internet Explorer),请参阅老式的方式." (2认同)

dav*_*vid 11

您需要重新发出load事件:

var evt = document.createEvent('Event');  
evt.initEvent('load', false, false);  
window.dispatchEvent(evt);
Run Code Online (Sandbox Code Playgroud)

访问window对象将是困难的部分,我认为只有iframe来自与您的页面相同的域才有可能.

  • @OgierSchelvis 不知道,那是五年前的事了。我想如果你需要这样做,那么你已经进入了一个我不想再考虑的怪异领域。 (3认同)