-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

没有任何反应,因为您没有关闭新创建的文档。如果您仔细查看浏览器,您会注意到它仍在加载。更正的代码(无用\n的s省略):

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 回答