在HTML5中有什麼可以替代iFrame
阿新 • • 發佈:2018-12-23
如果一定要用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。