2012-03-10 115 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)