電子書籍の厳選無料作品が豊富!

showModalDialogで、子ウィンドウを開き、子ウィンドウからwindow.openerの関数を呼ぼうとしています。Firefoxでは、問題なく呼べるのですが、IE7ですとwindow.openerそのものがnullになってしまいます。

回避策はあるのでしょうか? IE7のバグですかね?


window.showModalDialog("hoge.html", this, "スタイル");


var a = window.opener.hoge();

といった形で使用しています。ちなみにこの前にalert(window.opener)を入れたら、見事にnullって表示されました。

A 回答 (1件)

IE7はwindow.openerだめみたいです。

バグでは無くセキュリティ仕様かも
IE7使ってないのでためしていませんが
a = (window.open('', '_self').opener = window).hoge();
としてもだめですか?
あるいは、
a = window.parent.hoge();
はどうですか?

この回答への補足

ありがとうございます。

駄目でしたね。
window.parentは、objectになりましたが、hoge()は呼びにいってくれませんでした。メソッドが見えないようです。
window.open('', '_self').opener = window まではいきましたが、
これって、openerを書き換えてしまってますよね。

別の手段で目的は達成できました。こっちの方がスマートだと思ったんですが・・・

IEどうも信用できないですね。
Javascriptの仕様はどうなってるんでしょうか?
そのうち調べてみます。

補足日時:2008/10/31 13:14
    • good
    • 0
この回答へのお礼

家では、Firefoxを使っているんですが・・・
IEで使えないと駄目ですからね?

微妙な振る舞いの違いが結構負担になりますね。

ありがとうございました。

お礼日時:2008/10/31 13:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!