innerHTML在Chrome中与xhtml无法正常工作

时间:2010-06-15 17:20:11

标签: javascript ajax xhtml innerhtml

我遇到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 "&#x2014;">
<!ENTITY o "&#x2018;">
<!ENTITY c "&#x2019;">
<!ENTITY O "&#x201C;">
<!ENTITY C "&#x201D;">
]>
<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">

包含的div中

2 个答案:

答案 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来抽出新标记。