And*_*dez 5 html javascript internet-explorer dom
我正在写一些学术性的东西,我有命名空间的html元素,如:
<ns:LinkList id="sitesuteis" cssClass="classone">
<ns:LinkItem id="LI1" href="http://www.ibt.pt/" target="_blank">IBT</ns:LinkItem>
<ns:LinkItem id="LI2" href="http://http://html5demos.com/t/" target="_blank">HTML5 Demos</ns:LinkItem>
<ns:LinkItem id="LI3" href="http://diveintohtml5.ep.io/" target="_blank">Dive into HTML5</ns:LinkItem>
<ns:LinkItem id="LI4" href="http://html5boilerplate.com/" target="_blank">HTML5 Boilerplate</ns:LinkItem>
</ns:LinkList>
Run Code Online (Sandbox Code Playgroud)
现在,在javascript我正在尝试:
var elements = document.getElementsByTagName('ns:LinkItem');
element = elements[0];
console.log(element.getAttribute('id'));
//I get a correct value in all browsers
Run Code Online (Sandbox Code Playgroud)
试图在我的元素[0]中获取所有ChildNodes.它适用于所有浏览器,但-IE lt 9-除外
我试过了:
var children = element.getElementsByTagName('ns:LinkItem');
console.log(children.length);
Run Code Online (Sandbox Code Playgroud)
和:
var children = Array();
for (i=0; i<element.childNodes.length; i++){
alert(element.childNodes[i].nodeName);
if (element.childNodes[i].nodeName=="NS:LINKITEM"){
children.push(element.childNodes[i]);
}
}
console.log(children.length);
Run Code Online (Sandbox Code Playgroud)
在两个console.logs中,除了IE8或更少,我得到每个浏览器中正确的长度(4),我得到0.
根据@Shadow向导在IE8及以下版本中,元素的canHaveChildren属性为false,这意味着死胡同 - 浏览器根本不支持为此标记
设置子节点,例如,不能有子节点的方式.我试过了,这是真的.如果我尝试:
element.parentNode
Run Code Online (Sandbox Code Playgroud)
在IE 8或更低版本中,我得到包含我的标记的div,在其他浏览器中,我得到了我的父母
我真的需要一个黑客,我似乎找不到一个.
在 Internet Explorer 8 及更低版本中,canHaveChildren
该元素的属性是false
this 意味着死胡同,浏览器根本不支持该标记具有子节点,就像<br />
不能具有子节点一样。
不过,此问题已在 Internet Explorer 9 中得到修复。
归档时间: |
|
查看次数: |
1888 次 |
最近记录: |