2009-07-27 2 views
2

Хорошо, я сделал дерьмовую работу по описанию проблемы в своем предыдущем посте. Я думаю, что дискуссия отвлеклась от основной проблемы - так что я собираюсь попробовать еще раз. Mea Culpa до Elzo Valugi об указанной теме.Firefox не работает jQuery для вывода XHTML

У меня есть файл XML:

<?xml version="1.0" encoding="utf-8"?> 
<?xml-stylesheet type="text/xsl" href="wtf.xsl"?> 
<Paragraphs> 
    <Paragraph>Hi</Paragraph> 
</Paragraphs> 

достаточно просто. У меня также есть таблица стилей для создания XHTML вывода:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" 
      xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output method="xml" 
      indent="yes" 
      doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" 
      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 
      omit-xml-declaration="yes"/> 

    <xsl:template match="/*"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
     <head> 
     <title>FF-JS-XHTML WTF</title> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript" src="wtf.js"></script> 
     </head> 
     <body> 
     <xsl:apply-templates /> 
     </body> 
    </html> 
    </xsl:template> 

    <xsl:template match="Paragraph"> 
    <p> 
     <xsl:apply-templates /> 
    </p> 
    </xsl:template> 
</xsl:stylesheet> 

Последнее, но не менее, у меня есть следующие JQuery in toto (wtf.js, из тега сценария в таблицу стилей):

$(function() { 
    alert('Hiya!'); 
    $('<p>Hello</p>').appendTo('body'); 
}); 

Чрезвычайно просто, но достаточно для демонстрации. Когда я запускаю это в Internet Explorer, я получаю предупреждение «Hiya!» а также ожидаемый:

Hi 

Hello 

, но когда я запускаю его в Firefox (3.0.1), я все еще получаю предупреждение, но JQuery не вставляет пункт в DOM, и я просто получаю это:

Hi 

Если изменить таблицу стилей метод = «HTML» он отлично работает, и я получаю (наряду с предупреждением):

Hi 

Hello 

Почему Firefox не запустить J Запрос с документом XHTML? У кого-нибудь есть опыт работы с этой проблемой?

EDIT: ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Я могу успешно вставить элементы в документы таким образом, в Firefox (метод = «XML»):

var frag = document.createDocumentFragment(); 
var p = document.createElement('p'); 
p.appendChild(document.createTextNode('Ipsum Lorem')); 
frag.appendChild(p); 
$('body').append(frag); 

, но я бегу в аналогичной задаче с .remove() способ.

Все больше и больше выглядит, что Firefox не создает DOM из XML, к которому jQuery может относиться, или что-то подобное.

ответ

1

Я не очень хорошо знаком с jQuery, но мне кажется, что jQuery использует innerHTML для добавления фрагмента Hello (строка jQuery.1.3.2.js 911), который не будет работать с XHTML.

+0

@Alohci: Huzzah! Прогресс! Теперь ... какое заявление jQuery вы бы использовали в качестве альтернативы? Возможно ли это в jQuery? Цифры будут работать в IE6. Глупый дерьмовый браузер ... –

+0

Честно говоря, я не знаю, какой уровень поддержки jQuery для XHTML. Я предлагаю вам спросить об одном из списков рассылки jQuery.Что касается IE, это работает, потому что IE не поддерживает XHTML как XML, он просто рассматривает его как обычный HTML, где, конечно, «innerHTML» работает отлично. – Alohci

+0

Я преждевременно отмечал это, как ответил. Сожалею. Внутренний бит HTTML не объясняет, почему я могу успешно использовать метод append(), когда создаю узел в фрагменте документа (см. EDIT). –

0

Попробуйте использовать

$.("body").text("<p>Hello</p>"); 
0

ли этот вопрос? http://dev.jquery.com/ticket/4895 Предлагается использовать xsl:output method="html" вместо xsl:output method="xml".

+0

Нашел хороший список того, что требуется для работы документов приложения/xml в Firefox: http://ajaxandxml.blogspot.com/2009/03/firefox-xslt-errors.html Я решил проблему, установив тег , – solsson

Смежные вопросы