2012-03-10 113 views
1

好吧,我将根据一些答案重新修改我的请求,但它很复杂。我正在寻找的是,如果有一个JavaScript命令从父级的JavaScript中触发onload事件。一行代码,如: document.getElementById('FrameID').fire.onload(); 或者如果这不能完成。在javascript中强制一个window.onload事件

我正在头脑风暴一个应用程序,我要预先加载一些带有网址的iframe,比如10个。然后我将通过隐藏和显示框架来旋转它们。我希望能够在显示活动框架之后触发一个窗口onload事件,而无需重新加载页面,因此如果页面具有onload事件,页面就会像新鲜事物那样工作。我可以这样做吗?页面可能会或可能不会有窗口onload事件。

+0

火的窗口onload事件在哪里?在父窗口中?或者在给定的iframe窗口中? – Madbreaks 2012-03-10 00:45:44

+0

JavaScript将在正在运行该节目的父级中。 – user999684 2012-03-10 00:47:39

+0

还有一个问题 - 普通ol,JavaScript或jQuery等? – Madbreaks 2012-03-10 00:49:38

回答

0

如果你正在考虑IFRAME幻灯片要显示来自其他页面的内容,那么你应该看看这个教程(而不是图像只需添加网址): http://www.2webvideo.com/blog/easily-create-slideshow-with-iframe-tag

+0

这基本上就是我想要做的事情,但交换图片的url没有任何好处。我不想每次都重新加载它们,我希望能够在显示之后触发onload事件,基本上刷新页面而不调用服务器。 – user999684 2012-03-10 00:52:08

0

使用此tutorial可以使用:

document.getElementById("$FRAME_ID$").contentDocument.location.reload(true); 

然后简单地添加新的ID或类的每个元素,请参见:https://stackoverflow.com/a/2064863/1097415

+0

这不会强制另一个电话到服务器,但?这正是我想要避免的。 – user999684 2012-03-10 01:07:23

+0

它会在iframe中再次调用页面内容(它将重新加载iframe的内容)。 – 2012-03-10 01:10:43

10

您需要重新发出加载事件:

var evt = document.createEvent('Event'); 
evt.initEvent('load', false, false); 
window.dispatchEvent(evt); 

获取访问window对象将是最困难的部分,我认为这是唯一可能的,如果iframe会在同一个域中的页面。

+0

此方法与使用Event对象的浏览器兼容性更高吗?我认为是。 – 2017-08-22 10:06:42

+1

@OgierSchelvis不知道,这是十年前的事。我想如果你需要这样做,那么你已经处于一个我不想再想的怪异境地。 – david 2017-08-22 10:55:30

1

Document.createEvent()和Event.initEvent()是deprecated

使用Event构造现在:

const evt = new Event('build') 
window.dispatchEvent(evt)