2009-07-27 18 views
2

好的,我在上一篇文章中描述了这个问题,做了一件糟糕的工作。我认为讨论的焦点在于核心问题 - 所以我会再试一次。 Mea CulpaElzo Valugi关于上述线程。Firefox未运行jQuery for 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的运行jQu一个XHTML文档?有没有人有这个问题的经验?

编辑:附加信息

我可以成功地将元素插入到文档在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不会从jQuery可以涉及到的XML构建DOM。

回答

1

我对jQuery不是很熟悉,但是在我看来,jQuery使用innerHTML来添加“Hello”片段(jquery.1.3.2.js第911行),它不会与XHTML一起使用。

+0

@Alohci:Huzzah!进展!现在...你会用什么jQuery语句作为替代方案?这甚至可能在jQuery中?它会在IE6中起作用。愚蠢的废话浏览器... – 2009-07-27 23:55:43

+0

坦率地说,我不知道jQuery对XHTML的支持程度。我建议你问一个jQuery邮件列表。至于IE,它的工作原理是因为IE不支持XHTML作为XML,它只是将其视为普通的HTML,当然,“innerHTML”工作得很好。 – Alohci 2009-07-28 00:08:56

0

使用try

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