-1

ホストページからボタンをクリックして新しいページが動的に書き込まれた後、アラートを実行しようとしています。

新しいページが読み込まれますが、何も起こりません。

function test2() {

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

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

}
4

2 に答える 2

3

これは、 でスクリプトを追加しようとするのと似ていますinnerHTML: 動作しません。

代わりに、で<script>タグを作成しdocument.createElement、それをウィンドウの本体に追加する必要があります。

于 2012-11-05T18:42:55.077 に答える
0

新しく作成されたドキュメントを閉じていないため、何も起こりません。ブラウザをよく見ると、まだロード中であることがわかります。修正されたコード (不要な\ns は省略):

function test2 () {
    var win,
        html = '<!DOCTYPE html>';
    html += '<html>';
    html += '<head>';
    html += '<script type="text/javascript">';
    html += 'window.onload = function () {';
    html += 'alert("the test worked!");';
    html += '}';
    html += '<\/script>';
    html += '</head>';
    html += '<body>';
    html += '</body>';
    html += '</html>';
    win = window.open('','');
    win.document.write(html);
    win.document.close();
    return;
}

ご覧のとおり、新しく作成されたウィンドウへの参照が必要なので、そのドキュメントを閉じることができます。そして、常にセミコロンを使用してください。これにより、コードが読みやすくなり、実際に必要な状況で多くの害からあなたを救うことができます。

于 2012-11-05T19:17:35.147 に答える