[英]Cross-origin frame issue while accessing the iframe contentDocument property
[英]Define a Cross-origin Property
TL; DR:是否可以在父窗口上定義跨域屬性以充當子窗口可訪問的標志?
我有一個可以在iframe或頂級瀏覽上下文中運行的JavaScript應用程序。 在iframe中時,應用程序將嘗試使用window.postMessage在父窗口中查詢功能。 此功能可能不存在,因此我封裝了window.postMessage並實現了超時。 但是,超時時間必須很長,如果功能不存在,這會對加載時間產生負面影響。 是否可以在父窗口上定義跨域屬性以充當替換超時的標志?
var parent = window.parent;
if (parent && parent.hasFeature) {
window.postMessage(...);
return;
}
...
我沒有看到Object.defineProperty的訪問描述符提供的任何支持,並且看起來跨域屬性描述符映射是內部的。
我找不到在窗口上定義跨域屬性的方法。 我認為這不可能。 但是,我確實發現了三種在不使用Web請求或postMessage的情況下在具有不同來源的窗口之間傳遞數據的方法。
如果父母控制了孩子的位置,則將數據作為孩子要檢查的查詢參數。 注意,該參數也將傳遞給服務器。 請參見以下示例。
http://host/index.html?flag = 1
如果父母控制了孩子的位置,則將數據作為孩子要檢查的哈希片段。 這比查詢參數更合適,因為散列片段旨在用於客戶端數據。 但是,如果客戶端使用哈希片段進行導航,則可能不是一個選擇。
http://host/index.html#flag = 1
包括數據作為iframe的名稱 。 iframe的初始名稱定義嵌入式瀏覽上下文的名稱,子級可以使用window.name對其進行訪問。 但是,這不是window.name的預期用途,並且可能會被其他功能破壞。
<iframe name="flag=1" src="http://host"></iframe>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.