2011-12-05 21 views
2

ライトボックスにiframeを作成しました。親ウィンドウの関数を呼び出してライトボックスを閉じた後にライトボックスを開いたとき、親ウィンドウの関数でDOMをいくつか作成して更新してから、親ウィンドウこれらのDOMにアクセスしようとすると、例外 "script5011:解放されたスクリプトからコードを実行できません"がスローされます。IE9のiframeウィンドウが削除された後で、解放されたスクリプトのコードを実行できません。

私はこのwindow.parent.myFunc(arg1、arg2 ....)のようなiframeで親ウィンドウ関数を呼び出します。これは例外があります。テストしたので、IE 9の新しい機能が変更されたと思いますIE 6、7、8などのブラウザはすべてうまく動作していますが、IE 9の有効な解決策はまだ見つかりませんでした。私はここから答えを得ることができます。何か案は?

+0

私はこのwindow.parent.evalようなのiframeの方法で私のコール親ウィンドウの機能を変更してみてください( 'myFunction(arg1、arg2 ...)')、それは私のIE 9で正常に動作していますが、私はその理由を理解していません!何人かの人が教えてくれますか? – Jasper

答えて

1

この問題の原因は、フレームのURLがその後変更されたときにIE9が親ウィンドウのオブジェクトへの参照を削除し、セキュリティを強化するためです。 これに対する解決策は、変更することができ、親ウィンドウのセットアップ機能(セッター&ゲッタ)親ウィンドウデータオブジェクトです。親ウィンドウの関数に文字列にシリアル化された後、そのオブジェクトにオブジェクトを渡すことができます。親フレームの関数を呼び出す最良の方法は、子フレームで次のものを呼び出すことです。

window.parent.eval("resetDataObject()"); 

と親フレームの書き込みで何かのように:

var myDataObject = []; 
function resetDataObject() 
{ 
    myDataObject = []; 
} 

チェックこの記事http://www.tejzpr.com/2014/10/codefix-script5011-cant-execute-code.html

+0

ブログの投稿へのリンクが壊れています。リンクを指定できますか? – Andrius

関連する問題