簡體   English   中英

動態創建的iframe的onload事件永遠不會在IE中觸發

[英]onload event for dynamically created iframe never fires in IE

我有一個IE的問題,當動態創建iframe時,iframe的“onload / load”事件不會觸發 ,將其源設置為pdf並將其附加到文檔。

我需要監聽事件的原因是因為我需要隱藏iframe直到幀加載,然后使用一些效果將其淡入視圖。

我已經在我測試的每個瀏覽器(Chrome,Firefox,Safari,移動Safari)中都可以使用它,但它在IE8-> IE11中無效。

我已經看過很多關於IE如何不觸發onload事件的帖子,而且根據我收集的內容,以下內容應該有效:

// listen for when the iframe's content has been loaded...
if (window.addEventListener)
    iframe.addEventListener("load", framedContentLoaded, false);
else if (window.attachEvent)
    iframe.attachEvent("onload", framedContentLoaded);
else
    iframe.onload = framedContentLoaded;

但是,我的函數framedContentLoaded永遠不會在IE中被觸發。

我創造了一個小提琴,重現了這個問題: http//jsfiddle.net/s5TUU/

我有同樣的問題,我使用瀏覽器檢測和onreadystatechange事件來迎合IE,但后來它停止了IE11的工作。

已報告此錯誤,並提到了一種解決方法。

解決方法是將pdf放入帶有iframe的html頁面,然后將該html頁面加載到主iframe中。 你會有嵌套的iframe,它不漂亮,但它似乎與IE很好。 您將使用onload事件,使其成為跨瀏覽器解決方案。 您需要使父級和子級iframe具有相同的大小,並禁用父iframe上的滾動條,這樣您就不會獲得雙滾動條。

在我的情況下我使用ASP.Net MVC,我設置我的父iframe src來調用控制器動作,並將pdf url作為url參數傳遞。 該操作返回一個帶有子iframe的視圖,並將pdf分配給其src。

一個簡單的解決方案是簡單地使用Google Viewer for PDF。 這不僅顯示了PDF,而且onLoad屬性無疑也會起作用。 Google Viewer: https//docs.google.com/viewer我還應該注意,在網頁上嵌入PDF的正確方法是使用embed標記,而不是iframe。 也許,您可以嘗試使用onreadystatechange事件嗎?

使用jquery為此。

Var iframe = $(“”); iframe.attr(....)

$( “#內容”)HTML(iframe中)。 iframe.load(myFunction的);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM