我正在做一个学校项目。这是一个带XML / XSLT的互联网页面。 对于设计,我们考虑了背景中的图像褪色效果。
我可以看到它,它在IE7上完美运行。但是在FF 3.6中检查它会在firebug中引发一些可疑错误并且不起作用。
例如:
alert($('menu_bg').innerHTML);
与文档就绪/观察一起使用时有效。但这些都不起作用:
$('#menu_dots').append("content"); // jQuery
$('menu_dots').insert("content"); // prototype
关键是,我不明白,为什么一切都在没有XSLT的情况下工作。但是当我对XSLT做同样的事情时,它会在FF中中断。
http://nak.erline.eu/index.xml
同域/js/_script.js
我认为这个问题是基于jQuery的,这就是我开始将其翻译成原型的原因。在我的一半路上,我意识到问题仍然存在。这就是为什么代码仍然使用jQuery(注释)和Prototype。
有你的想法吗?
答案 0 :(得分:2)
在XSLT文件更改的顶部:
<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" />
到
<xsl:output method="html" indent="yes"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" />
请注意,输出方法类型应为 html ,而不是 xml 。这解决了我的测试中的问题。
我在这里找到了答案的提示:Why does my simple strict XHTML file give errors when I include jquery?
同样在我的测试中,我删除了以下脚本引用
<script src="src/scriptaculous.js" type="text/javascript"/>
<script type="text/javascript" src="js/_script.js"/>
并添加了对jQuery的引用
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
并使用您的jQuery代码段进行测试。
<script>
$(document).ready(function(){
$('#menu_dots').append("content");
});
</script>
答案 1 :(得分:1)
如果你必须使用XSLT,HTML DOM,XML和跨浏览器功能,我强烈推荐Sarissa。它将使与Microsoft的硬兼容不兼容的ActiveX DOM和所有其他基于W3C的DOM更加容易。
您(可能,不一定)面临的问题是生成的DOM对象不属于相同的源XML文档,这是默认的DOM行为。结果,jQuery或Prototype无法找到新元素。一种解决方法是将它们作为文本插入并重新进行重新分析,但这样做成本很高。还有其他解决方法,但最简单的可能是看看Sarissa并学会使用它。这并不难,使您的代码更具可读性。你会发现Sarissa会照顾这些和其他微妙之处,所以你可以担心更重要的事情。