代码之家  ›  专栏  ›  技术社区  ›  Scott Baker

Firefox没有为XHTML输出运行jQuery

  •  2
  • Scott Baker  · 技术社区  · 15 年前

    好吧,我在上一篇文章中描述这个问题的时候做得很糟糕。我认为讨论偏离了核心问题,所以我要再试一次。 Mea Culpa 埃尔佐·瓦卢吉 关于上述线程。

    我有一个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中运行此命令时,会收到警报“你好!”以及预期的:

    Hi
    
    Hello
    

    Hi
    

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

    
    你好
    

    为什么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);
    

    但我遇到了一个类似的问题 .删除() 方法。

    Firefox似乎越来越不从jQuery可以关联的XML或类似的XML构建DOM。

    3 回复  |  直到 14 年前
        1
  •  1
  •   Peter Mortensen icecrime    14 年前

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

        2
  •  0
  •   solsson    15 年前

    http://dev.jquery.com/ticket/4895 他们建议使用 xsl:output method="html" 而不是 xsl:output method="xml"

        3
  •  0
  •   stealthyninja michkra    13 年前

    试用

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