2016-05-17 67 views
0

如果我嘗試打開一個彈出窗口,並用元標記設置字符編碼,則新窗口會忽略該標記。如果我手動將新窗口上的編碼設置爲UTF-8,則HTML僅能正確顯示。WIndow.open錯誤的字符編碼

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(); 
+1

您可能希望確保在適用的情況下,使用適當的'<!DOCTYPE html>',''和''標籤來包裝您的內容。這可能有助於解決您的一些編碼問題,但如果不解決問題,那麼出於標準考慮,這當然不是一個壞主意。 –

+0

打開您最喜愛的瀏覽器的開發人員工具中的網絡選項卡,並查看請求中使用的編碼,而不是呈現的html。你會看到瀏覽器使用的真正的字符集 –

+0

'chatBoxContent'是否包含有效的URF8? – mplungjan

回答

0

請逃脫結束腳本標籤,因爲他們亂用現有的腳本,除非該代碼是在外部js文件:

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

FIDDLE

而且win.document.open();因爲第一個document.write將會打開文檔,所以不需要。在過去,人們認爲document.open以mime類型作爲參數,但我認爲它從來沒有奏效。

此外,當頁面加載後調用document.write()時,會自動調用document.open(),但W3C規範中沒有定義這種調用。

0

我改變了路徑到反斜槓,它的工作原理。

感謝mplungjan

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

不客氣。我將我的評論改爲答案 – mplungjan