• ベストアンサー

JavaScript内からJavaScriptを書き出したいのですが

こんにちは. JavaアプレットとJavaScriptを利用してJavaScriptを書き出すコードを書いてみたのですが,うまく動きません.具体的なコードは以下のようで,リンクはできるのですが,マウスを乗せるとオブジェクトを指定してくださいとエラーがでます.innerHTMLでJavaScriptを書き出すことはできないのでしょうか? <html> ・・・ <body> <SCRIPT language="JavaScript" type="text/javascript"> <!-- function dWrite(){ str='<script type="text/javascript">functionLinkMo(){varLM1;LM1=window.open"","Doc","toolbar=no,location=no,kdirectories=no,width=300,height=250");LM1.document.write"<html><head><title></title></head><body>testです/body></html>");LM1.document.close();}</script><body>rinku <ahref="#"onMouseOver="LinkMo()">ここにのせると</a></body></html>'; document.getElementById("here").innerHTML=str;} //--> </script> <applet ・・・dWriteを呼び出す></applet> <div id="here" style="position:absolute;width:600px; left:0px;top:0px;"> </div></body></html>

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

  • ベストアンサー
  • MO_
  • ベストアンサー率100% (2/2)
回答No.1

ども。(^o^)/ WindowsXP+IE6.0、NC7.1、OE7.23の環境で 「<applet ・・・dWriteを呼び出す></applet>」 の部分を 「<A href="#" onMouseOver="dWrite()">aaa</A>」 に変えてみたところ、問題なく動作するようです。 もしかしたら、JavaApplet側の呼び出し定義の問題かも しれませんね。JavaAppletのプログラミングの問題で したら、「http://oshiete1.goo.ne.jp/oshiete.php3?c=253」 での話になってしまいますが…。(自分もJAVAは詳しく無いので) もし上記でもエラーが出るようでしたら、エラーの 内容やご利用のOS・ブラウザ等の環境を教えて いただければもうちょっと詳しいお話が出来るかも。 ちなみに、JavaScriptでJavaScriptのコードを書き出すこと 自体は可能です。もちろん文字列のエスケープ等にも 注意する必要は有りますし、出来れば str="<SCR"+"IPT type=~" なんてしてあげた方が、誤動作を防げます。

timetraveler
質問者

お礼

回答ありがとうございます. 分かりにくい質問で申し訳ございません. 簡単に上のコードを説明しますと, アプレットが実行されると,リンクにマウスを乗せると"testです"と書かれた新しいウインドウが開くJavaScriptが,<div id="here"・・></div>のところにinnerHTMLにて挿入される,というものです.(dWriteの中身)しかしながら,このdWriteをLiveConnectによりアプレットから実行すると,リンクまでは表示されるのですがマウスを乗せると"オブジェクトをしてしてください"とエラーがでて新しいウィンドウが開けません.もしかしたら,アプレットからの操作は何かしらの制限がかかっているのかと疑っています. ちなみに環境はWinXP,IE6.0,Netscape7で実験しています.

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • you111111
  • ベストアンサー率45% (20/44)
回答No.3

リンクまでは作成されているようなので、呼び先が見つからないだけでは? >str='<scripttype="text/javascript">functionLinkMo(){varLM1;LM1=window.open"","Doc","toolbar=no..... ↑ function と LinkMo() の間にスペースがないよーな...?

timetraveler
質問者

お礼

回答ありがとうございます. いろいろ検討してみましたが, 現在innerHTMLを使うとHTMLタグは評価されるが,JavaScriptは評価されないのでは?という感じがしています. この質問は,アプレットを使わないでもテストできるコードで再質問したいと思います.

すると、全ての回答が全文表示されます。
  • lawson
  • ベストアンサー率44% (29/65)
回答No.2

innerHtmlは IE依存のやり方だから、あまり柔軟性がないし、 仕様も不明かくだよ。 DOMを使ったDynamic HTML のほうが簡単ですよ。 ######以下のソースを参考にしてね####### <html> <head> <script> var count = 1; function makeSubmitButton() { var obj = document.createElement("INPUT"); obj.type = "submit"; obj.name = "newSubmit"; obj.value = "新しくできたサブミットボタン " + count++ + " 号だよ。よかったら押してね"; document.forms[0].appendChild(obj); } </script> </head> <body> <form action="http://www.yahoo.co.jp" > <input type="button" name="createButton" value="submitボタンをつくるぞ" onclick="makeSubmitButton();"> <br> </form> </body> </html>

timetraveler
質問者

お礼

回答ありがとうございます. innerHTMLってIE依存だったんですか.知りませんでした. フォームに関しては上のようなやり方もあるんですね. 他にも方法がないかいろいろ検討してみます. また,この質問はコードをもっと簡単にし,アプレットを使わない方法で再質問したいと思います.

すると、全ての回答が全文表示されます。

関連するQ&A