1

重複の可能性:
アクセス許可が拒否されました IE iFrame
jquery を使用して動的 iframe から親ドキュメントにアクセスします

<iframe>を使用して、動的な子から親ドキュメントにアクセスしようとしています$('#_hf_iFrame', top.document)。Firefox、Chrome、および Safari で動作しますが、IE ではAccess Denied例外がスローされます。

次のコードを使用して<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

コードを次のように変更しました

//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 に答える
0

これで問題が解決する場合があります。

クロス サブ ドメイン Javascript

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

基本的に、JS は、img.yourdomain.com のようなサブドメインであっても、www.yourdomain.com とは異なるドメインであると考えています。そのため、これら 2 つのサブドメインのページにまたがる AJAX は機能しません。また、ある iframe から別の iframe がある場合、JS 変数または関数を前後に参照することはできません。

于 2012-10-18T05:22:37.193 に答える
-1

親と iframe の両方が同じドメインにある場合、iframe から Parent オブジェクトを取得できると思います。そうしないと、子 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 に答える