在Firefox中使用JavaScript的客户端xslt
作者:互联网
我正在使用客户端xslt将xml文件转换为xhtml.有一些障碍,但除此以外,我设法通过了所有障碍.
问题是当我有一个像这样的简单xml文件时
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="./jsInFf.xsl"?>
<root>hello</root>
并使用这样的简单xsl将其转换为xhtml
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml"
version="1.0"
encoding="ISO-8859-1"
indent="yes"
omit-xml-declaration="no"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>a title</title>
<script type="text/javascript">
alert(document);
alert(document.anchors);
</script>
</head>
<body>
<xsl:value-of select="." /> world
</body>
</html>
</xsl:template>
</xsl:stylesheet>
第一个警报将使用Firefox弹出为“ [object XMLDocument]”,而不是像IE和Safari一样弹出“ [object]”.从我收集到的信息来看,这意味着firefox不会产生javascript html文档(或html dom,不确定其措辞是什么). firefox中的第二个警报将是“未定义”,但是在IE和safari中,它是“ [object]”.
因此,在firefox中,没有document.forms或document.anchors等.我知道某些javascript仍可以正常工作,例如document.getElementById,但我担心如果document.forms之类的工具可以使用像ajax这样的更高级的东西就不能正常工作.不存在.
是否有解决方法?在我当前的项目中,我正在重写一堆页面以使用xslt.已经有很多javascipt编写了,如果可能的话,将其全部更改为使用有限的firefox javascript并不是一个真正的选择.
非常感谢您的帮助.
解决方法:
1)解决您的问题
解决问题的方法就像将xsl:output元素上@method属性的值从“ xml”更改为“ html”一样简单.
2)解释差异
HTML DOM扩展了核心XML DOM接口.因此,例如,集合“表单”在XMLDocument中不存在,但在HTMLDocument中
标签:firefox,client-side,xslt,javascript 来源: https://codeday.me/bug/20191107/2003569.html