我有2个域名。 domain1上的一个页面使用iframe从domain2加载内容。如何在domain1上的完整父框架中打开domain2(iframe内部)中的链接?
我一直在关注IE application attribute和w3c的新sandbox attribute,但我不确定如何实现这些以及它们是否兼容跨浏览器。有没有任何其他技巧来解决这个问题?
我可以用javascript像素做点什么吗?
答案 0 :(得分:2)
您需要使用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如果您需要更多详情。对于&lt; IE8和其他旧浏览器,有一些hacky变通方法on this page看起来相当全面。
答案 1 :(得分:1)
您可以使用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(当前),没有任何问题。