我有2個域。 domain1上的一個頁面使用iframe從domain2加載內容。我如何允許在domain1上的完整父框架中打開來自domain2(在iframe內)的鏈接?允許iframe鏈接到目標父框架跨域
我一直在看IEs application attribute和W3C的新sandbox attribute,但我不確定如何實現這些,如果他們兼容跨瀏覽器。有任何其他技巧來解決這個問題嗎?
有什麼我可以做一個JavaScript像素可能嗎?
我有2個域。 domain1上的一個頁面使用iframe從domain2加載內容。我如何允許在domain1上的完整父框架中打開來自domain2(在iframe內)的鏈接?允許iframe鏈接到目標父框架跨域
我一直在看IEs application attribute和W3C的新sandbox attribute,但我不確定如何實現這些,如果他們兼容跨瀏覽器。有任何其他技巧來解決這個問題嗎?
有什麼我可以做一個JavaScript像素可能嗎?
您需要使用postMessage()來跨域發送數據。
1.代碼組成上domain2.com鏈路(的iframe中的鏈接):
<a href="javascript:;" onclick="top.postMessage('newpage.html','http://domain2.com')"></a>
2.捕捉在頁的頭部的消息上domain1.com(父頁)和導航:
window.addEventListener("message", function(e){
window.location.href = e.data //navigates to newpage.html
}, false)
類似問題here如果您需要更多detais。對於< IE8和其他舊瀏覽器,有一些hacky解決方法on this page看起來相當全面。
您可以使用Javascript覆蓋A標籤並將它們指向window.parent。
http://jfcoder.com/test/iframe_open.html
window.onload = function(){
var a = document.getElementsByTagName('a');
for (var i = 0; i < a.length; i++) {
a[i]['_href'] = a[i].href;
a[i].href = '#';
a[i].onclick = function(){
window.parent.location = this._href;
return false;
}
}
}
顯然,這是不是你一定要在你的最終代碼使用的代碼,只是一個概念證明。但是,這在IE9,FF4和Chrome(當前)沒有任何問題。
您是否在iframe中的鏈接上嘗試過'target =「_ parent」。 – Niklas 2011-05-30 16:53:24
是的,頁面加載在一個新的窗口和鉻引發錯誤:'不安全的JavaScript嘗試啓動導航更改' – cronoklee 2011-05-30 17:08:56