- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IEではJavaScriptの入れ子はダメ?)
IEではJavaScriptの入れ子は認識できないのでしょうか?
このQ&Aのポイント
- 画面で各ページの共通する部分をJavaScriptで作って、外出しファイルにし、それぞれのページで使っています。
- 外出ししたスクリプトファイルの中で、さらに別のスクリプトファイルを入れ子状態で使っています。
- IEではJavaScriptの入れ子は認識できないのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
出来る出来ないではなく考え方の相違。 これは実行順が親(前半)→子→親(後半)ではなく親(前半)→親(後半)→子のようになるからである。 バグではなく仕様。 IEではプログラムが実行された後に書き込んだ命令を読み込むので上記のように実行されたこととなる。 つまりいったん親のjavascriptが書き込んだ後(この状態では子のscriptは読み込まれていない),書き込まれた文章を認識し子のscriptを実行する。 IE/NNで同じ動作で行う場合は FUNCTION 化しておき関数として読み込む。 以下SAMPLE/ >>HTML <html> <head> </head> <body> <script language=JavaScript1.2 src=outfile2.js></script> <script language=JavaScript1.2 src=outfile.js></script> </body> </html> >>outfile.js document.write("****************************\n"); out2(); document.write("****************************\n"); >>outfile2.js function out2(){ document.write("<TABLE><TR><TD>DATA SET------------>></TD></TR></TABLE>\n"); }
お礼
仲間内でこの問題について話し合い、結論としては「やっぱりM社の製品だからだね。ネスティングも出来ないなんてアプリケーションとしては最低だね。これは不具合だ」ということになりました。 従って、 <script language=JavaScript1.2 src=yyy.js></script> <script language=JavaScript1.2 src=xxx.js></script> と分けることにしました。
補足
>バグではなく仕様。 私もそのように思ったので、「IEは・・・」と書きました。 バグとは思っていません。 ただ、質問を出してからも色々実験してみると、子を呼ぶ時に、つまり、 document.write("<script LANGUAGE=JavaScript1.2 src=yyy.js></script>\n"); の部分で「yyy.js」を絶対パスで書くと上記の現象が起き、相対パスで書けば起きないらしいことがわかってきました。 もう少し色々実験してみようと思います。 アドバイスありがとうございました。