WIndow.open错误的字符编码

时间:2016-05-17 14:36:08

标签: javascript

如果我尝试打开弹出窗口,并使用元标记设置字符编码,则新窗口会忽略该标记。如果我手动将新窗口上的编码设置为UTF-8,则HTML只能正确显示。

var headerPopupContent = '<head>'
            + '<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">'
            + '<title>Chat</title>'
            + '<link rel="stylesheet" href="assets/css/style.css">'
            + '<link rel="stylesheet" href="assets/css/style-rtl.css">'
            + '</head>';
    var chatBoxContent = $('#popup-box').html();
    var footerPopupContent = '<script src="assets/js/jquery-1.12.3.min.js"></script>'
            + '<script src="assets/js/script.js"></script>';
    var win = window.open('', '', 'width=350, height=430, top=50, left=50, resizable=1, scrollbars=1');
    win.document.open();
    win.document.write(headerPopupContent + chatBoxContent + footerPopupContent);
    win.document.close();

2 个答案:

答案 0 :(得分:0)

我将路径更改为反斜杠,并且有效。

感谢mplungjan

var footerPopupContent = '<script src="assets\js\jquery-1.12.3.min.js"></script>'
            + '<script src="assets\js\script.js"></script>'

答案 1 :(得分:0)

请转义结束脚本标记,因为它们会破坏现有脚本,除非代码位于外部js文件中:

var footerPopupContent = '<script src="assets/js/jquery-1.12.3.min.js"><\/script>' 
+ '<script src="assets/js/script.js"><\/script>';

FIDDLE

由于第一个document.write将打开文档,因此不需要win.document.open();。在过去,人们认为document.open将mime类型作为参数,但我相信它从未奏效。

  

此外,在页面加载后调用document.write()时会发生自动document.open()调用,但是在W3C规范中没有定义。