2011-07-07 37 views
8

我必須在我的網頁div中包含一個網頁。我想用iframe這樣的東西來完成DIV。基本上,我將爲我的div提供一個URL,並且必須在其內部打開它...在現代HTML中,我們是否有這樣的東西?我無法使用框架,因爲某些瀏覽器對框架有問題。在div中包含一個網頁

+0

我懷疑,你必須使用'iframe'少的問題比你會通過重新'用'div' iframe'功能。您使用'iframes'(或'frame's)時遇到哪些瀏覽器有問題? –

+0

找不到任何投票下來,這只是一個簡單的問題,因爲Chrome瀏覽器不允許幀間通信 – Varun

+0

Chrome允許幀間通信。沒有CORS,它不允許域間通信,但這是根據規範。 – Quentin

回答

3

沒有。您不能在另一個div元素中嵌入完整的HTML文檔,因爲這是一個塊級元素,並且W3C已經定義了其中可能包含的內容。

但有一個解決方法。請按照下列步驟:

  1. 獲取使用文件AJAX(jQuery的岩石,請使用)
  2. 提取<body>元素的內容並把它你div元素中
  3. 獲取<head>元素的所有鏈接和腳本並將它們追加到現有pgae的<head>元素中。
+0

不錯的建議 – Varun

+2

你會遇到一個跨站點腳本錯誤 – kleinohad

+1

我意識到這是一箇舊的,但我有相同的要求。如果你使用這個想法,你會遇到'id'屬性的問題嗎? (你可能在「合併」的頁面上有兩個相同的id)重複的id可能會弄亂瀏覽器和任何'js'查詢代碼... – Jess

1

你應該使用iframe。這基本上是iframes的用途。如果你堅持使用現代瀏覽器,無論如何他們不會有iframe問題(不會超過你將不得不面對的使用div的代替)...

0

本應該是問題本身,但是OP澄清了他不想使用iframe的原因是因爲不允許幀間通信。那麼,這不是代理+ postMessage無法解決。

我相信根本沒有辦法實際將完整的文檔嵌入到另一個文檔中,保留諸如樣式和腳本等的分離之類的東西,而不用某種意義上的框架。

0

這實際上是賽義德迴應的延伸。爲了解決跨站點腳本問題,您必須在自己的服務器上編寫一個腳本,該腳本執行CURL調用來嵌入網頁。然後,您的JavaScript將調用此腳本,並將該URL作爲GET/POST參數傳遞。

我同意很多其他人在這裏,這是一個情況下,你真的應該只使用一個iframe ...我相信你可以設置沒有src標記的iframe,並手動將其中的內容。這意味着你不需要採取賽義德建議分解頭部和身體的步驟。但是,您仍然需要我描述的腳本來解決跨站腳本問題。

16

嘗試使用<object>元素:

<div style="margin: 0 auto; width:100%; height:400px;"> 
    <object type="text/html" data="**URL to page**" 
      style="width:100%; height:100%; margin:1%;"> 
    </object> 
</div> 
+0

它兼容哪些瀏覽器/版本? – checksum

相關問題