0

空白のウィンドウを開き、新しいウィンドウに JavaScript を記述してフォームを送信しています。

行 "newWindow.document.write(newwdtxt2);\n\" (最後から 3 行目) を実行すると、例外が発生し、最後の 2 行が実行されません。以下の言及は私のコードです

function openWindow(url,name,options) {
       var aToken = ""; 
       aToken ="2121225434349231132674638921:SUPER.SUPER"; 
       if(aToken=="") { 
       aToken=document.formEMS.AUTHTOKEN.value; }
       var newWindow = window.open("", name); 
       if (!newWindow) return false; 
       var newwdtxt = ""; 
       newwdtxt += "<html><head></head>\n"; 
       newwdtxt += "<body>\n"; 
       newwdtxt += "<form name=\"eventForm\" method=\"post\" action="+url+ ">\n"; 
       newwdtxt += "<input type=\"hidden\" name=\"AUTHTOKEN\"";
       newwdtxt += "value= '";newwdtxt += aToken+"'/>\n"; 
       newwdtxt += "</form>\n"; 
       newwdtxt += "<scr"; 
       var newwdtxt1 = ""; 
       newwdtxt1 += "ipt type=\"text/javascript\" language=\"javascript\">\n"; 
       newwdtxt1 += "window.onLoad=document.eventForm.submit();\n"; 
       newwdtxt1 += "</scr"; 
       var newwdtxt2 = ""; 
       newwdtxt2 += "ipt>\n"; 
       newwdtxt2 += "</body></html>\n"; 
       newWindow.document.write(newwdtxt);
       alert(newwdtxt); 
       newWindow.document.write(newwdtxt1);
       alert(newwdtxt1); 
       alert(newwdtxt2); 
       newWindow.document.write(newwdtxt2);
       alert('wrote newwdtxt2'); 
       return newWindow; } 

何が問題なのかを理解するのを手伝ってください。

4

4 に答える 4

2

これを調べる必要があります:http://getfirebug.com/

于 2009-10-15T13:37:31.640 に答える
1
  1. Javascript は複数行の文字列をサポートしています:
    var doc = '<html>\
    <頭>\
    </head>\
    <本体>\
    </body>\
    </html>';
  1. 完全なタグを書きます (これが問題の原因でした): document.write('</scr' + 'ipt>'); 正常に動作します
  2. javascript のデバッグを容易にするために firebug コンソールを使用する
于 2009-10-15T14:22:24.743 に答える
1

これにより、構文例外が発生します。代わりにこれを試してください:

   newWindow.document.write(newwdtxt+newwdtxt1+newwdtxt2);
于 2009-10-15T14:37:57.317 に答える
0

document.writeを実行すると、ブラウザはDOMノードに書き込んだhtmlを解析すると思います。あなたのコードでは不完全なHTMLを書いているので、それが解析されるとエラーが発生します。「ipt>」を現在の場所ではなく、「newwdtxt1」の最後に配置してみてください。

于 2009-10-15T13:39:27.347 に答える