我一直在使用 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之类的操作,而不是打开新的弹出窗口..编码将正常工作=(谢谢
虽然我不建议使用 document.write,而且我不确定这是否能解决您的问题,但您可以尝试在 $.ajax 函数上强制内容编码,如下所示:
$.ajax({
url : "./home.html",
cache : false,
contentType: "text/html;charset=UTF-8"
type: 'POST',
dataType : "html",
});