Javascript 用AJAX加载的XSLT包含<;脚本>;仅在Firefox中触发

Javascript 用AJAX加载的XSLT包含<;脚本>;仅在Firefox中触发,javascript,ajax,xslt,xhtml,Javascript,Ajax,Xslt,Xhtml,我编写了一个应用程序,其中AJAX加载一个XSLT,其中包含一个 奇怪的是,该脚本在Firefox中运行时没有eval()。脚本未在Opera或Chrome中运行。 因此,我简化了代码并将其发布在这里 这是Firefox的bug吗 是否有跨浏览器的解决方法?(这是一种解决方法,它不在firefox上运行eval(),只对来自xslt的脚本运行,而是在Chrome上运行eval() index.xhtml <?xml version="1.0" encoding="UTF-8"?> &

我编写了一个应用程序,其中AJAX加载一个XSLT,其中包含一个

奇怪的是,该脚本在Firefox中运行时没有
eval()
。脚本未在Opera或Chrome中运行。 因此,我简化了代码并将其发布在这里

这是Firefox的bug吗

是否有跨浏览器的解决方法?(这是一种解决方法,它不在firefox上运行
eval()
,只对来自xslt的脚本运行,而是在Chrome上运行
eval()

index.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><script src="app.js" /></head>
<body onload="locationHashChanged();" />
</html>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:strip-space elements="*" /> 

<xsl:template match="//*[@path='']">
<body xmlns="http://www.w3.org/1999/xhtml">
<script>alert('Only in Firefox');</script>
</body>
</xsl:template>

</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<menu name="" path="" />
xslt.xsl

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><script src="app.js" /></head>
<body onload="locationHashChanged();" />
</html>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:strip-space elements="*" /> 

<xsl:template match="//*[@path='']">
<body xmlns="http://www.w3.org/1999/xhtml">
<script>alert('Only in Firefox');</script>
</body>
</xsl:template>

</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<menu name="" path="" />

警报(“仅在Firefox中”);
apps.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><script src="app.js" /></head>
<body onload="locationHashChanged();" />
</html>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:strip-space elements="*" /> 

<xsl:template match="//*[@path='']">
<body xmlns="http://www.w3.org/1999/xhtml">
<script>alert('Only in Firefox');</script>
</body>
</xsl:template>

</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<menu name="" path="" />

将提醒放在CDATA标记中是否有帮助?所以

<script type="text/javascript">
  <![CDATA[alert('Only in Firefox');]]>
</script>


对于xslt模板中包含的所有javascript,我已经开始这样做了

,您能清楚地解释您得到了哪些行为以及您期望的行为吗?为什么你提到
eval
,为什么有代码用
eval
注释掉?我只在Firefox中得到
alert()
。我什么都不期望,因为所有用AJAX加载的脚本都需要
eval()
才能运行。此代码中没有
eval()
。HTML5规范中有一些非规范性文本,明确区分了
script
通过
transformToFragment
创建的元素与其他方式创建的元素。基于这一部分,我认为Mozilla在将片段插入浏览器窗口的文档时执行XSLT创建的脚本代码是正确的。它与AJAX或XMLHttpRequest无关。你很好!是的,似乎所有其他浏览器都做得不对。谢谢