1

可能重复:
权限被拒绝 IE iFrame
使用 jquery 从动态 iframe 访问父文档

我正在尝试<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();

我该如何解决这个问题?

4

3 回答 3

0

这可能会解决您的问题。

跨子域Javascript

<script type="text/javascript">
document.domain = "yourdomain.com";
</script> 

基本上,JS 认为即使是诸如 img.yourdomain.com 这样的子域也是与 www.yourdomain.com 不同的域。因此,来自这两个子域的页面之间的 AJAX 将不起作用。此外,如果您有一个从一个到另一个的 iframe,您将无法来回引用 JS 变量或函数。

于 2012-10-18T05:22:37.193 回答
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();

它适用于所有浏览器......但我仍然找不到这个奇怪问题的原因。

于 2012-10-18T07:22:28.910 回答
-1

如果父级和 iframe 都在同一个域上,我认为您可以从 iframe 中获取父级对象。否则子 iframe 或父 iframe 无法相互访问。

设置域

document.domain = 'yourdomain.com';

编辑:

document.domain 只能设置为subset of the current domain. 所以developer.mozilla.org可以设置为mozilla.org,但不是mozilla.com。此属性在某些浏览器中也可能是只读的。

于 2012-10-18T05:22:19.407 回答