1. 程式人生 > >在HTML5中有什麼可以替代iFrame

在HTML5中有什麼可以替代iFrame

如果一定要用iframe功能並控制從中提供基本頁面或內容的伺服器,則可以使用跨源資源共享(http://www.w3.org/TR/access-control/)允許client-side JavaScript通過XMLHttpRequest()將資料載入到<div>中:

// I safely ignore IE 6 and 5 (!) users
// because I do not wish to proliferate
// broken software that will hurt other
// users of the internet, which is what
// you're doing when you write anything
// for old version of IE (5/6) xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if(xhr.readystate == 4 && xhr.status == 200) { document.getElementById('displayDiv').innerHTML = xhr.responseText; } }; xhr.open('GET', 'http://api.google.com/thing?request=data', true); xhr.send();

現在,為了完成整個操作的關鍵步驟,您需要為您的伺服器編寫程式碼,以便為客戶端提供Access-Control-Allow-Origin標頭檔案,指定您希望客戶端程式碼能夠通過XMLHttpRequest()訪問哪些域。以下是可以包含在頁面頂部的PHP程式碼示例,以便將這些標題傳送給客戶端:

<?php
  header('Access-Control-Allow-Origin: http://api.google.com');
  header('Access-Control-Allow-Origin: http://some.example.com');
?>

第五種方法

object在HTML5中是一個簡單的選擇:



<object data="https://blogs.claritycon.com/blog/2016/03/bower-packages-asp-net-core-1-0/" width="400" height="300" type="text/html">
    Alternative Content
</object>

也可以試試embed



<embed src="https://blogs.claritycon.com/blog/2016/03/bower-packages-asp-net-core-1-0/" width=200 height=200 />

其他補充

iframe仍然是下載跨域可視內容的最佳方式。有了AJAX,你肯定可以從網頁上下載HTML並貼上到div中(正如其他人所說的那樣),但更大的問題是安全性。使用iframe,能夠載入跨域內容,但無法操作它,因為內容實際上不屬於您。另一方面,使用AJAX,您可以操縱任何您可以下載的內容,但是需要設定其他域的伺服器,以便您可以下載。很多時候,你將無法訪問其他域的配置,這可能是一個頭痛的問題。在這種情況下,iframe用起來更容易。

正如其他人所提到的,你也可以使用嵌入標籤和物件標籤,但這不一定比iframe更先進或更新穎。

HTML5在採用Web API來從跨域獲取資訊方面走得更遠。通常web API只是返回資料,而不是HTML。