2008-04-14
请教Mozilla自定义标签的解析的问题。
关键字: jsi
今天重新考虑JSI装饰引擎的事情。
一个一年多前的老问题:
我在html中嵌入如下自定义标记:
<ns:test> <div>test</div> </ns:test>
Mozilla 浏览器将解析为: <ns:test></ns:test> <div>test</div>
而不是我们想当然的:<ns:test> <div>test</div> </ns:test>
这样一来,JSI的装饰引擎就无法装饰这些div,table之类的块元素(现在的办法是在他们外面套一个span,极不优雅)
Google了半天没有找到任何解决办法。
倒是找到一个与我同样的问题:
http://groups.google.com/group/mozilla.dev.apps.firefox/browse_thread/thread/921eb0451e5ed66c
在这里问问大家,有没有谁考虑过这个问题呢?
最好有解决办法,那就不胜感激了,^_^
一个一年多前的老问题:
我在html中嵌入如下自定义标记:
<ns:test> <div>test</div> </ns:test>
Mozilla 浏览器将解析为: <ns:test></ns:test> <div>test</div>
而不是我们想当然的:<ns:test> <div>test</div> </ns:test>
这样一来,JSI的装饰引擎就无法装饰这些div,table之类的块元素(现在的办法是在他们外面套一个span,极不优雅)
Google了半天没有找到任何解决办法。
倒是找到一个与我同样的问题:
http://groups.google.com/group/mozilla.dev.apps.firefox/browse_thread/thread/921eb0451e5ed66c
在这里问问大家,有没有谁考虑过这个问题呢?
最好有解决办法,那就不胜感激了,^_^
- 20:59
- 浏览 (431)
- 评论 (9)
- 分类: JavaScript
- 进入论坛
- 发布在 javascript研究小组 圈子
- 相关推荐
评论
jindw
2008-04-25
hax 写道
jindw 写道
其实这个也不管命名空间的事情。
直接用
<mytag>
<div>Mozilla 系列浏览器中,这个div不会解析为 mytag的子元素</div>
</mytag>
也是一样的问题
直接用
<mytag>
<div>Mozilla 系列浏览器中,这个div不会解析为 mytag的子元素</div>
</mytag>
也是一样的问题
IE也不会。不过IE貌似可以没来由的加上一句 document.createElement('mytag') 来改变这一行为。
我在处理IE的时候,确实发现了一些问题(具体都不太记得了,呵呵)。不过,可以通过一些技巧改变。
给指定命名空间的元素,绑上一个空的hta,就可以正常工作了。
hax
2008-04-17
HexUzHoNG 写道
改为xhtml后,div还有其它一些元素的显示效果和html貌似会不一样。
好像这种情况下会有问题,一个div宽100%,里面一个table,table宽100%,这个div要模仿浏览器滚动条功能,就是overflow-y这种效果。
这时div的宽度会超过浏览器屏幕的宽度,造成出现浏览器横向滚动条。
不知道是不是代码哪个地方没写对还是什么问题。
好像这种情况下会有问题,一个div宽100%,里面一个table,table宽100%,这个div要模仿浏览器滚动条功能,就是overflow-y这种效果。
这时div的宽度会超过浏览器屏幕的宽度,造成出现浏览器横向滚动条。
不知道是不是代码哪个地方没写对还是什么问题。
可能因为div的scrollbar不算在content之内,所以超过了width。
hax
2008-04-17
jindw 写道
其实这个也不管命名空间的事情。
直接用
<mytag>
<div>Mozilla 系列浏览器中,这个div不会解析为 mytag的子元素</div>
</mytag>
也是一样的问题
直接用
<mytag>
<div>Mozilla 系列浏览器中,这个div不会解析为 mytag的子元素</div>
</mytag>
也是一样的问题
IE也不会。不过IE貌似可以没来由的加上一句 document.createElement('mytag') 来改变这一行为。
hax
2008-04-17
fyting 写道
嗯,我正好也遇到相同的问题,response里的Content-Type要设置为text/xml或者application/xhtml+xml,否则FireFox不会正确识别为xml,你可以用FireBug的HTML功能看出两者区别,没有正确识别时会显示出一个属性:“_moz-userdefined”,郁闷无比……如果要靠服务器端修改代码,对客户端框架而言是个致命影响。
还有一个方法就是把文件后缀名改为xhtml。这样在本地会识别为xhtml,而多数Web server也会自动加上正确的content-type。
HexUzHoNG
2008-04-15
改为xhtml后,div还有其它一些元素的显示效果和html貌似会不一样。
好像这种情况下会有问题,一个div宽100%,里面一个table,table宽100%,这个div要模仿浏览器滚动条功能,就是overflow-y这种效果。
这时div的宽度会超过浏览器屏幕的宽度,造成出现浏览器横向滚动条。
不知道是不是代码哪个地方没写对还是什么问题。
好像这种情况下会有问题,一个div宽100%,里面一个table,table宽100%,这个div要模仿浏览器滚动条功能,就是overflow-y这种效果。
这时div的宽度会超过浏览器屏幕的宽度,造成出现浏览器横向滚动条。
不知道是不是代码哪个地方没写对还是什么问题。
jindw
2008-04-15
其实这个也不管命名空间的事情。
直接用
<mytag>
<div>Mozilla 系列浏览器中,这个div不会解析为 mytag的子元素</div>
</mytag>
也是一样的问题
直接用
<mytag>
<div>Mozilla 系列浏览器中,这个div不会解析为 mytag的子元素</div>
</mytag>
也是一样的问题
jindw
2008-04-15
hax 写道
就是要serve为xhtml,才能识别为xml。
那是当能,但是实际运用中又不能接受,那样依赖变化太大,比如tagName都变成小写了,以前的很多代码都会又问题。
fyting
2008-04-15
嗯,我正好也遇到相同的问题,response里的Content-Type要设置为text/xml或者application/xhtml+xml,否则FireFox不会正确识别为xml,你可以用FireBug的HTML功能看出两者区别,没有正确识别时会显示出一个属性:“_moz-userdefined”,郁闷无比……如果要靠服务器端修改代码,对客户端框架而言是个致命影响。
我看decorator-support.js里面有这样的代码:
并且FF里面也完全正常,代码还没看懂,原来都是通过加span来解决的吗?
另外,我研究了下Netvibes,他的UWA规范是这样的:
结果他最后直接使用了document.getElementsByTagName('preference')
有没有什么办法可以解决这个问题呢,用namespace是一件看起来很不错的事情……找到篇MSDN的blog,也在抱怨,不过距离现在又有一年多了,不知道有没有新的变化http://blogs.msdn.com/dthorpe/archive/2006/12/18/namespaces-in-html-too-much-trouble-to-bother-with.aspx
还找到这篇没有来得及看,得明天来解决了。http://blogs.nitobi.com/dave/?p=131
我看decorator-support.js里面有这样的代码:
DecoratorEngine.prototype.buildTree = function(root){
var tree = {children:[]};
if(this.tagExp){
this.htmlWalk(root,tree);
return tree.children;
}
if(BrowserInfo.isIE()){
var decoratorElements = root.all.urns(dns);
}else if(document.documentElement.tagName == 'html' //xhtml
&& document.documentElement.namespaceURI == 'http://www.w3.org/1999/xhtml'){
var decoratorElements = document.getElementsByTagNameNS(dns,'*');
}else{
this.domWalk(root,tree);
return tree.children;
}
并且FF里面也完全正常,代码还没看懂,原来都是通过加span来解决的吗?
另外,我研究了下Netvibes,他的UWA规范是这样的:
<widget:preferences>
<preference name="townName" type="text" label="Town" defaultValue="" />
</widget:preferences>
结果他最后直接使用了document.getElementsByTagName('preference')
有没有什么办法可以解决这个问题呢,用namespace是一件看起来很不错的事情……找到篇MSDN的blog,也在抱怨,不过距离现在又有一年多了,不知道有没有新的变化http://blogs.msdn.com/dthorpe/archive/2006/12/18/namespaces-in-html-too-much-trouble-to-bother-with.aspx
还找到这篇没有来得及看,得明天来解决了。http://blogs.nitobi.com/dave/?p=131
hax
2008-04-15
就是要serve为xhtml,才能识别为xml。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 177744 次
- 性别:

- 来自: 初到北京

- 详细资料
搜索本博客
最新评论
-
JSI Side 代码风格与规范 ...
1. new String(”test”) != new String(” ...
-- by hotoo -
JSA压缩Prototype1.6时, ...
xhtml要套CDATA的吧? 应该没问题的
-- by csf178 -
补充一下2007年度总结 ...
有追求的淫啊
-- by dogo -
技术人成长的阶段特征
自我否认中...
-- by tangshuo -
JSI Side 代码风格与规范 ...
每种语言都有自己的访问控制方式 既然javascript没提供scope对象以 ...
-- by csf178






评论排行榜