2012-10-06 23 views
0

嘿傢伙我試圖添加一個iframe到頁面使用append。在Firefox中,它添加了一個空的iframe,但在Chrome中它的工作原理應該如此。只有當windowLocation是window.location時,纔會附加空的iframe。當我將其更改爲其他網址時,它可以正常工作。使用jQuery添加一個iframe使用變量src

$("#button").click(function() { 
var windowLocation = window.location; 
$("body").append('<iframe id="fullFrame" width="1000" height="1000"></iframe>'); 
$("#fullFrame").attr("src", windowLocation); 
}); 
+0

您正在嘗試創建無限嵌入循環。 – jfriend00

回答

0

對我來說,這看起來像這樣會創建一個遞歸。根據框架集的一些舊規格,在這種情況下,這種框架應被視爲空:http://www.w3.org/TR/WD-frames-970331#nesting

因此,也許Firefox實現了這種行爲。

+0

爲什麼它應該創建一個循環,而不是在主文檔中創建文檔的iframe?這不應該與其他任何iframe有所不同。 –

+0

不好意思,事實上它不會在iframe被自動插入之前創建一個recusion,但根據規範它是關於URL的所有內容,所以Firefox可能根本不在意用戶操作插入了框架。 – ndm

+0

我只是用document.location.hostname對它進行了測試,所以它返回我的域名,它仍然是一個空的iframe。 –

0

有人可能會問爲什麼你自己嵌入自己的網頁的副本?這可能會產生某種瀏覽器可能試圖阻止的無限嵌套問題。 iframe將自身嵌入自身中,嵌入自身中,除非您的代碼或瀏覽器阻止發生這種情況,否則它永遠不會停止,直到所有內存或其他資源耗盡爲止。

至於清理代碼,我建議改變這個代碼:

$("#button").click(function() { 
var windowLocation = window.location.href; 
$("body").append('<iframe id="fullFrame" src="' + windowLocation + '"width="1000" height="1000"></iframe>'); 

}); 

這改變了兩件事情。首先,它使用位置對象的href屬性來獲取URL,其次,它創建並插入iframe,並且.src屬性已經就位。

+0

嘿謝謝你的回答。我的代碼實際上看起來像這樣,但我在添加iframe之後在stackoverflow中看到了一個添加屬性的人。無論如何,這仍然不起作用。我的項目非常具體,這就是爲什麼我這樣做。 –

+0

@ChristianIvanov - 你似乎無法理解無限的嵌入問題。這試圖將當前文檔嵌入到當前文檔中。當它加載到iframe中時,iframe文檔將再次嘗試將自身嵌入到自身中。當iframe加載時,它會再次嘗試將自己嵌入到自身中,直到某些東西強制它停止嵌入或耗盡資源時纔會停止。 – jfriend00

+0

當在主文檔上按下按鈕時,會觸發這種情況,只有當再次按下iframe中的按鈕時,iframe中的iframe纔會發生。這不是發生了什麼事。它嵌入了一個空的iframe,如果iframe循環的情況下,它不會在Chrome中工作。 –