プロが教える店舗&オフィスのセキュリティ対策術

こんにちは.
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>

A 回答 (3件)

ども。

(^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=~"
なんてしてあげた方が、誤動作を防げます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます.
分かりにくい質問で申し訳ございません.

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

お礼日時:2004/06/24 08:40

リンクまでは作成されているようなので、呼び先が見つからないだけでは?




>str='<scripttype="text/javascript">functionLinkMo(){varLM1;LM1=window.open"","Doc","toolbar=no.....

↑ function と LinkMo() の間にスペースがないよーな...?
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/26 16:07

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>
    • good
    • 0
この回答へのお礼

回答ありがとうございます.
innerHTMLってIE依存だったんですか.知りませんでした.
フォームに関しては上のようなやり方もあるんですね.
他にも方法がないかいろいろ検討してみます.

また,この質問はコードをもっと簡単にし,アプレットを使わない方法で再質問したいと思います.

お礼日時:2004/06/26 16:05

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