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)    收藏  举报

导航