2014-07-10 44 views
0

我正在製作幻燈片實現。我們必須預取圖像以獲得更好的用戶體驗。目前我正在使用隱藏的img標籤來觸發圖片加載。但是當用戶從第一張圖像移動到第80張圖像時,爲第一張圖像啓動的預取圖像請求不會被取消。僅使用javascript創建iframe

使用iframe我們可以在iframe對象上調用stop()來停止加載上一組圖像。對於使用JavaScript創建的I幀的標準似乎是

ifrm = document.createElement("IFRAME"); 

我不想這樣做,因爲我不希望我的iframe被附加到DOM。有一個HTMLFrameElement。但我不確定如何使用它。

所以我的問題是,如何在javascript中創建iframe而不訪問文檔對象。

+5

你爲什麼不想使用'document'對象? –

+3

「我想創建一個iframe而沒有一個工具可以讓我創建一個iframe」。似乎是合法的。 –

+2

@泰姆如果它是作業,那是一個殘忍的或(更可能)無知的老師。 – joews

回答

2

是的,您可以創建一個iframedocument而不添加它,但可訪問性僅限於iframe元素本身。

  • Unappended元素沒有parentElement也不parentNode
  • 如果你會失去(在你的榜樣ifrm)的參考iframe,該 元素已經一去不復返了
  • 不能內訪問窗口iframe或加載文檔
  • onloadiframe的事件,不會觸發

您可以更改例如src或未被佔用的尺寸iframe。是的,內容與主頁面異步加載。

+0

編輯該問題。那麼如何創建iframe元素? –

+0

@AirirhanJ在你的例子中,你究竟是如何做到的。只需將iframe存儲到數組中而不是一堆變量。儘管你不能在不訪問'document'的情況下創建任何HTMLElement,因爲所有元素都只是文檔對象中的屬性。 HTMLFrameElement('')已棄用,它已用於框架集。不過,我認爲您在這裏遇到了一個XY問題,使用iframe幾乎不能解決您的問題。也許你最好用一個示例代碼發佈關於原始問題的問題。 – Teemu

3

您發佈的代碼是解決方案。

如果不使用document(您爲什麼想要?),則無法編寫等效代碼。您需要將Javascript's interface用於DOM,它是通過document(或window)提供的。

您可以使用jQuery和其他支持DOM的庫來抽象化DOM API調用,但是在它們的覆蓋下,它們都調用document方法。

+0

有什麼辦法可以創建一個HTMLFrameElement對象並將其用作iframe?就像我們如何使用新的Image()在javascript中創建圖像一樣。 –

+0

我對創建元素的風格不是很熟悉。也許這個問題可以幫助嗎? http://stackoverflow.com/questions/6936071/where-are-constructors-such-as-new-image-and-new-option-documented – joews