id和name的区别及在flash里面的不同表现
一直对id和name属性挺模糊的,加上最近碰到flash交互时的问题,做个记录吧:
区别:
1、id是元素身份,是唯一的,而name是元素名称,可以重复;
name个性:1、name属性可以用来和服务器端交互数据;
2、name属性可以用来建立锚点,如:<a name="test"></a>;
3、name可以作为默写特定元素的属性,如Object
下面是id和name用在Object时候的区别:
demo1: <object id="test">
<embed id="test" />
</object>
用window['test']获取flash元素各浏览器显示如下:
IE:Object
FF:undefined
chrome:HTMLColletion
用document['test']获取flash元素结果如下:
IE:Object
FF:HTMLEmbedElement
chrome:undefined
所以为了兼容各个浏览器,可以用document['test'] || window['test']来获取flash元素,顺序不能颠倒,因为这样在chrome下获取的是HTMLColletion,那么在flash中注册的容器函数不能正常调用。
有人跟我说,定义Object时一定要一个id和一个name好兼容各个浏览器,事实测试后发现,不一定要这样。如果把后面一个id换成name的话,测试结果如下:
demo2: <object id="test">
<embed name="test" />
</object>
用window['test']获取flash元素各浏览器显示如下:
IE:Object
FF:undefined
chrome:HTMLColletion
用document['test']获取flash元素结果如下:
IE:Object
FF:HTMLEmbedElement
chrome:HTMLEmbedElement
唯一的区别是chrome此时获取到embed元素了,获取flash元素还是只能用document['gameflash'] || window['gameflash'],顺序不能颠倒。
不过可以看得出来,chrome更严谨一些,name属性都存储在document对象中,window对象可以存储id和name;而FF的window对象不存储id属性,document属性存储id和name;IE则只能识别Object,并且id和name(可以把第一个id换成name测试)同时有效,并都存储在window和document对象中。(注:此结论只适用于Object元素中)。
posted on 2012-11-13 21:36 feibinyang 阅读(471) 评论(0) 收藏 举报
浙公网安备 33010602011771号