Firefox没有为XHTML输出运行jQuery

时间:2009-07-27 21:32:53

标签: jquery firefox xslt xhtml

好的,我在上一篇文章中描述了这个问题。我认为讨论偏离了核心问题 - 所以我要再试一次。关于上述主题的 Mea Culpa Elzo Valugi

我有一个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

如果我将样式表更改为 method =“html”,它可以正常工作,我会得到(以及警报):

Hi

Hello

为什么Firefox不运行带有XHTML文档的jQuery?有没有人遇到过这个问题?

编辑:附加信息

我可以在Firefox(method =“xml”)中以这种方式成功地将元素插入到文档中:

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

但是我遇到了与 .remove()方法类似的问题。

越来越多的人认为Firefox不构建jQuery可以与之相关的XML,或者某些东西。

3 个答案:

答案 0 :(得分:1)

我对jQuery不是很熟悉,但在我看来,jQuery使用innerHTML来添加“Hello”片段(jquery.1.3.2.js第911行),这些片段不适用于XHTML。

答案 1 :(得分:0)

尝试使用

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

答案 2 :(得分:0)

这是这个问题吗? http://dev.jquery.com/ticket/4895 他们建议使用xsl:output method="html"代替xsl:output method="xml"