基本上,我想要一个 iFrame,它始终限制其内容,就好像内容来自不同的域一样,即使内容来自相同的源。
有没有什么办法可以做到这一点?
基本上,我想要一个 iFrame,它始终限制其内容,就好像内容来自不同的域一样,即使内容来自相同的源。
有没有什么办法可以做到这一点?
最佳解决方案可能是在iframe上使用HTML5沙盒属性,该属性(默认情况下)显式禁用脚本和对父DOM的同源访问。
有关详细介绍,请参见http://msdn.microsoft.com/en-us/hh563496.aspx
截至2012年12月,大多数当前浏览器都支持此功能。
这将隐藏子框架/窗口中的window.parent
,但不会影响top
属性。
但是,在子窗口/框架的onload事件结束之前,window.parent
属性仍然是可访问的。
<html>
<head>
<style type="text/css">
#wrapper {width:1000px;height:600px;}
</style>
<script type="text/javascript">
window.onload = function() {
var frm = document.getElementById('childFrame');
var win = frm.contentWindow || (frm.contentDocument && frm.contentDocument.parentWindow) || (frm.document && frm.document.parentWindow);
if (win) win.parent = null;
}
</script>
</head>
<body>
<div id="wrapper">
<iframe id="childFrame" src="child.html" frameborder="0" style="width:100%;height:100%;"></iframe>
</div>
</body>
</html>
top
的关键字,与 parent
不同的是,它不能被重新定义。 - Cetin Sert