innerHTML не работает правильно с xhtml в Chrome - PullRequest
3 голосов
/ 15 июня 2010

У меня проблема с Chrome5.0.375.70, , но FF 3.6.3 и Opera 10.53 в порядке.Ниже приведена строка кода:

document.getElementById('content').innerHTML = data.documentElement.innerHTML; 

Объект data из кода является документом (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 в заголовке пропущено ;пользователь не может видеть форматированный текст и изображения.

Как это исправить или обойти?

PS Я пытаюсь поместить chapter01.xhtml в div, который содержится в <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Ответы [ 2 ]

0 голосов
/ 15 июня 2010

У меня была похожая ситуация, когда я хотел отфильтровать элементы DOM, и лучшим способом, который я нашел, было использование смеси DOMParser и XmlSerializer, найденной здесь:

http://www.hiteshagrawal.com/javascript/convert-xml-document-to-string-in-javascript

Эторазумный кросс-браузерный метод.

Редактировать: Чтобы уточнить немного, вы должны загрузить строку html в DOMParser и сможете работать с DOMDocument, как обычно, затем вы можете использовать XmlSerializer илиIE эквивалентно откачке новой разметки.

0 голосов
/ 15 июня 2010

.innerHTHML равно НЕ СТАНДАРТНО и является плохой практикой и зависит от реализации браузера и не должно использоваться. Особенно с XHTML это не поддерживается.

...