• ベストアンサー

document.writeの文字列が実行されるタイミング

javascriptで<script>タグの表示をdocument.writeで行ったところ、 直後に、<script>ソースの関数呼び出しでリンク切れになったのですが、 なぜでしょうか。 document.writeの文字列が実行されるタイミングっていつなんでしょうか。 <script> document.write('<script type="text/javascript" src="hoge.js"></script>'); hoge(); </script> ※hoge()はhoge.js内で定義されています。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

やるならこう <script> document.write('<script type="text/javascript" src="hoge.js"></'+'script>'); </script> <script> hoge(); </script>

その他の回答 (1)

noname#36864
noname#36864
回答No.2

<html> <head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS"> <title>scripts</title> <script> document.open(); document.write('<script type="text/javascript" src="hoge.js">alert("hoge")<\/script>'); document.write('<script type="text/javascript">function hoge1(){ alert("+++hoge+++") }<\/script>'); document.close(); var s = document.scrits||document.getElementsByTagName("script"); alert(s.length);//オブジェクトは作られる(IE6:length=3,Firefox:length=2) try{ hoge1();//IE6実行される,Firefox2実行されない。 }catch(e){ alert(e);//Firefox2はscripts[2]の内容は読み込んでいないようです。 } try{ hoge(); }catch(e){ alert(e);//scripts[1]の内容は読み込んでいないようです。 } </script> <script> alert(document.getElementsByTagName("head")[0].innerHTML);//**** hoge1();//scripts[2]の内容は読み込んでいるようです。 hoge();//scripts[1]の内容は読み込んでいるようです。 </script> </head> <body> </body> </html> //****によるとdocument.writeが書かれたscriptの次にタグが書かれるようなのでその時に実行されると解釈しても良いじゃないでしょうか。 IE6のhoge1()の挙動が気になりますけど・・・

関連するQ&A

専門家に質問してみよう