!!!開放されたスクリプトからコードを実行できません [IE][JavaScript] !!発生例 {{ref_image err_script01.jpg}} 以下の例で発生 *JavaScriptファイル(hoge.js)に、クラスを定義 *定義したクラスには、メソッドを持たせる。 hoge.js function Hoge() { this.field = ・・・ this.foo() = function() { : } } *上記のクラス(のインスタンス)を、モーダルダイアログに渡し、ダイアログから同じクラスをリターンさせる。 var h = new Hoge(); // ret は、Dialogで生成した、Hogeイン var ret = window.showModalDialog(url, h); スタンス ret.foo(); // ここで発生 !!想定 *Javaのクラスのイメージで、書いちゃったのが失敗。 *実際のjsファイルはひとつでも、それぞれのWindowに読込まれているファイルは別物。 *なので、ダイアログで、同じクラスと考えてリターンしても、 var h = new Hoge(); : window.returnValue = h; window.close(); *ダイアログを閉じた時点で、実装されたメソッドの内容は開放されてしまうんだろう。 *値は、保持されている。 !!対応 !ダイアログ側で、クラスをインスタンス化せずに、渡されたインスタンスを使う !戻ってきたインスタンスの値をコピーして、新しいインスタンスを作り直す。 var h = new Hoge(); // ret は、Dialog側で生成した、Hogeインスタンス var ret = window.showModalDialog(url, h); var newH = new Hoge(ret); // Hogeに、値をコピーするコンストラクタを実装しておく newH.foo();