- ベストアンサー
FORMのSELECTのOPTION項目をサブウインドウから追加できない
- IEで表示すると、IEからは、”サーバーが例外を返しました”とのエラーが発生し、最悪の場合、IEが落ちます。
- 具体的な環境としては、Windows2000Server + IE6.0、Windows2000Professional + IE5.0、WindowsNTServer 4.0 + IE6.0、Windows98 + IE5.5 で確認済みです。
- 質問者は、error.htmをIEで表示すると、サブウインドウが開いて、_sub.htmにアクセスします。しかし、JavaScriptによってDのオプションの追加が行われずエラーが発生しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
確か、セキュリティの問題だったか何かで、外部から直接オブジェクトを変更するような操作はできなかったのではないかと思います。 ですので、対応方法としては、error.htmに自分のOptionオブジェクトに新たに値を追加する関数を作り、_sub.htmはその関数を呼ぶようにすれば対応できると思います。 そういう方法ではだめでしょうか? 以下、こんな感じで行けると思う例です。 ----error.htm---- <HTML><HEAD></HEAD> <SCRIPT> function addOption(text,value){ sel = this.document.testForm.sel1; sel.options[sel.options.length] = new Option(text,value); } </SCRIPT> <BODY onLoad="window.open('_sub.htm')"> <form name="testForm"> <select name="sel1"> <option selected>A</option> <option>B</option> <option>C</option> </select> 'D' should be added by JavaScript in the '_sub.htm'.<br> However, the error ocurred and it was not performed! </form> </BODY></HTML> ----_sub.htm---- <HTML> <HEAD></HEAD> <SCRIPT> function AddOption(){ opener.addOption("D","V"); } </SCRIPT> <BODY onLoad="AddOption()"> Test Sub Window </BODY></HTML>
お礼
と思ったのですが、お礼がしっかりといえていなかったようです。 (というか、確認画面でできたと思っていた。) ありがとうございました。 おかげで、無事無事動作させることができました。 また、子ウインドウで親ウインドウのフォーム内容を、typeとnameによって、すべて書き込むようなものを作成していたため、以下のようにして使用しました。これも大丈夫でした。 ありがとうございました。 ---(親ウインドウ)--- function addOption(sel,text,value){ sel.options[sel.options.length] = new Option(text,value); } ---(子ウインドウ)--- function AddOption(){ opener.addOption(opener.testForm.sel1,"D","V"); }
補足
ご回答ありがとうございました。 おかげさまで、無事動作させることができました。 ありがとうございました。 (「御礼を言う」で入れた文章は、どこに行ってしまうの?)