【问题标题】:Document.write loses encoding (Chrome)Document.write 丢失编码(Chrome)
【发布时间】:2014-12-09 16:45:00
【问题描述】:

我一直在使用 ajax 获取一个 html 页面,然后打开一个新窗口并将 html 数据写入这个新窗口。

它在 IE 8 上运行良好......但是,Chrome 正在搞乱编码......

我的代码:

 $('#bo').submit(function( event ) {

             $.ajax({
                url : "./home.html",
                cache : false,
                type: 'POST',
                dataType : "html",
            }).done(function(data) {
                 var doc = window.open("", "_blank");
                 doc.document.write(data);
                 doc.document.close();
                });

             event.preventDefault();
            return false;
        });

数据字符串包含这个html:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE">
</head>

<body>
    <div id="ui-master">
        <div id="ui-header">
         </div>
   </div>
</body>
</html>

有人可以在这里给我指路吗?我有点困惑为什么它可以在 IE 上运行,但不能在 Chrome 上运行。 当 dom 准备好时,我正在加载一些 jquery 功能,如 jquery 对话框、jquery 咆哮消息和敲除内容以填充页面,不确定它是否相关。

奇怪的事实是,如果我更改代码,请执行替换我的窗口 html 而不是打开新弹出窗口之类的操作。编码将正常工作 =( 谢谢

【问题讨论】:

  • 你能把data的内容也贴在这里吗?
  • document.write 通常被认为是不好的做法:您可能希望研究 DOM 操作的替代方法。 (更多:stackoverflow.com/questions/802854/…

标签: jquery html ajax google-chrome


【解决方案1】:

虽然我不建议使用 document.write,而且我不确定这是否能解决您的问题,但您可以尝试像这样在 $.ajax 函数上强制进行内容编码:

$.ajax({
                url : "./home.html",
                cache : false,
                contentType: "text/html;charset=UTF-8"
                type: 'POST',
                dataType : "html",
            });

【讨论】:

    猜你喜欢
    • 2011-06-27
    • 2013-09-07
    • 1970-01-01
    • 2012-12-15
    • 2020-08-21
    • 2021-01-08
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多