0

以下のコードを使用して、ボタンをクリックするだけで新しいhtmlページにJavaScriptを動的に書き込もうとしています。

ただし、そうしようとするとエラーが発生するため、理論的には「文字列の汚染がない」というエラーが発生します。これは機能するはずです。

var html     =  '<!DOCTYPE html>\n'
html    +=  '<html>\n'
html    +=  '<head>\n'
html    +=  '<script type="text/javascript">\n'
html    +=  'function testme() {\n'
html    +=  'alert("the test worked!")\n'
html    +=  '}\n'       
html    +=  '</script>\n'
html    +=  '</head>\n'
html    +=  '<body>\n'
html    +=  '</body>\n'
html    +=  '</html\n'

window.open('','').document.write(html)
4

2 に答える 2

1

最後の行に終了>がありません

html    +=  '</html\n'  <-- Missing a greater than

する必要があります

html    +=  '</html>\n'

コードがインラインであり、外部スクリプトにない場合は、終了スクリプトタグを分割する必要があります。

html    +=  '</scr' + + 'ipt>\n';

また、セミコロンを使用します。

これで、window.open、document.writeの行が奇妙に見えます。ほとんどの開発者はそれを次のように書くでしょう

var winPop = window.open('','');
winPop.document.open();
winPop.document.write(html);
winPop.document.close();
于 2012-11-05T17:57:14.230 に答える
0

html +=すべての行を配置する代わりに複数の行を使用できるヒントです。行の最後にバックスラッシュを追加するだけです。

html = '<html>\n  \
        <head>\n \
        <script type="text/javascript">\n \
            function testme() {\n \
                alert("the test worked!")\n \
            }\n \
        </script>\n \
        </head>\n \
        <body>\n \
        </body>\n \
        </html>\n  ';

ただし、コードにいくつかの欠陥があり、忘れてい>ました。</html> そして、epascarelloがスクリプトタグを分割すると言ったように。

$_GETただし、ポップアップを使用して別のhtmlドキュメントを開きたい場合、またはphpファイルを開きたい場合は、値を取得してカスタム値を入力するだけでかまいません。より信頼できるものは何でしょう。

$_GETについてのw3cをチェックしてください

于 2012-11-05T18:30:10.770 に答える