可能重复:
Permission Denied IE iFrame
Access parent document from dynamic iframe using jquery
我正在尝试使用<iframe>
从动态$('#_hf_iFrame', top.document)
孩子访问父文档。它适用于Firefox,Chrome和Safari,但IE会抛出拒绝访问例外。
我正在使用以下代码动态创建<iframe>
。
这个问题是这个问题的延续。我使用以下代码将动态附加到文档。
var _hf_iFrame = document.createElement("iframe");
_hf_iFrame.setAttribute("id", "_hf_iFrame");
_hf_iFrame.setAttribute("name", "_hf_iFrame");
_hf_iFrame.setAttribute("allow-transparency", true);
_hf_iFrame.setAttribute("style", "height: 354px; width: 445px; border: 0; top: 23%; position: fixed; left:0; overflow: show; background:transparent;");
document.body.appendChild(_hf_iFrame);
_hf_iFrame.setAttribute("src", "javascript:false");
var myContent = '<!DOCTYPE html>'
+ '<html><head><title></title><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script><script type="text/javascript" src="http://somedomain.com/js/core.js"></script></head>'
+ '<body style="margin: 0px;"></body></html>';
_hf_iFrame.contentWindow.document.open('text/html', 'replace');
_hf_iFrame.contentWindow.document.write(myContent);
_hf_iFrame.contentWindow.document.close();
我该如何解决这个问题?
答案 0 :(得分:0)
这可能会解决您的问题。
<script type="text/javascript">
document.domain = "yourdomain.com";
</script>
基本上,JS认为即使是子域名如 img.yourdomain.com是一个与www.yourdomain.com不同的域名。 因此,来自这两个子域的页面之间的AJAX不会 工作。此外,如果你有一个iframe从一个到另一个,你就不会 能够来回反驳JS变量或函数。
答案 1 :(得分:0)
我已将代码更改为
//var source = "javascript:void((function(){document.open();document.domain=\'cloudapp.net\';document.close();})())";
var source = "javascript:false";
var elem = document.createElement("iframe");
elem.frameBorder = "0";
elem.src = source;
elem.style.width = "100%";
elem.style.margin = "0px";
elem.style.padding = "0px";
elem.setAttribute("id", "_hf_iFrame");
document.body.appendChild(elem);
elem.contentWindow.document.open('text/html', 'replace');
elem.contentWindow.document.write(myContent);
elem.contentWindow.document.close();
它适用于所有浏览器......但我仍然找不到这个奇怪问题的原因。
答案 2 :(得分:-1)
如果父和iframe都在同一个域上,我认为你可以从iframe获取Parent对象。否则,子iframe或父级不能互相访问。
设置域名
document.domain = 'yourdomain.com';
<强>编辑:强>
document.domain只能设置为subset of the current domain
。因此,developer.mozilla.org
可以设置为mozilla.org
,但不能设置为mozilla.com
。在某些浏览器中,此属性也可能是只读的。