我遇到Chrome5.0.375.70,但FF 3.6.3和 Opera 10.53都有问题。以下是代码行:
document.getElementById('content').innerHTML = data.documentElement.innerHTML;
代码中的数据对象是一个文档(typeof(data)=='object'),我通过ajax请求得到它 chapter01.xhtml :
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html [
<!ENTITY D "—">
<!ENTITY o "‘">
<!ENTITY c "’">
<!ENTITY O "“">
<!ENTITY C "”">
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Alice's Adventures in Wonderland by Lewis Carroll. Chapter I: Down the Rabbit-Hole</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<link rel="stylesheet" type="application/vnd.adobe-page-template+xml" href="page-template.xpgt"/>
</head>
<body>
<div class="title_box">
<h2 class="chapnum">Chapter I</h2>
<h2 class="chaptitle">Down the Rabbit-Hole</h2>
<hr/>
</div>
Chrome 剪切所有正文,结果指向标题中 css 的链接错过;用户无法看到格式化的文本和图像。
我该如何解决或绕过?
P.S。我尝试将 chapter01.xhtml 放入<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
答案 0 :(得分:0)
.innerHTHML
非标准,这是一种不好的做法,并且依赖于浏览器实现,不应使用。特别是使用XHTML时,它不受支持。
答案 1 :(得分:0)
我有类似的情况,我想过滤DOM元素,我发现的最好的方法是使用这里找到的DOMParser和XmlSerializer的混合:
http://www.hiteshagrawal.com/javascript/convert-xml-document-to-string-in-javascript
这是一种合理的跨浏览器方法。
编辑:要进一步详细说明,您可以将html字符串加载到DOMParser并且能够像往常一样使用DOMDocument,然后您可以使用XmlSerializer或等效的IE来抽出新标记。