[英]getElementsByTagName() behaves differently in IE and FF
我刚接触JavaScript,试图找出标签信息值。 GWT代码如下。
public static native boolean isToolBarInstalled() /*-{
alert("Validating the toolbar installed.");
var metas = document.getElementsByTagName('head')[0].getElementsByTagName('meta');
var i;
alert ("Meta length: "+metas.length);
for (i = 0; i < metas.length; i++){
alert("Value: "+metas[i].value);
if (metas[i].getAttribute('name') == "toolbar"){
return true;
}
}
return false;
}-*/;
FF对于同一页返回true,而IE返回false? 任何线索/建议都将有所帮助。
WM。
HTML太大而无法发布,下面是代码片段。
<html>
<head>
....
<title>My App</title>
<meta name="toolbar" content="1.0">
</head>
<body>
.....
</body>
<html>
尝试这个:
element.attributes[value].nodeAttribute;
如此处所述 :
尝试获取标签元素的for属性时,getAttribute()方法在Internet Explorer中将返回“ null”。
可能是同一个问题...
好看:
在此示例中,它正在IE上运行。
function isToolBarInstalled() {
alert("Validating the toolbar installed.");
var metas = document.getElementsByTagName('head')[0].getElementsByTagName('meta');
var i;
alert ("Meta length: "+metas.length);
for (i = 0; i < metas.length; i++){
alert("Value: "+metas[i].value);
var attr = metas[i].getAttribute('name');
// IE workaround
if (attr == null)
{
attr = metas[i].attributes["name"];
if (attr != null) attr = attr.nodeValue;
}
if (attr == "toolbar")
return true;
}
return false;
}
alert( "Is installed: " + isToolBarInstalled() );
在IE7中为我工作。
检查您是否在<meta>
结束标记之前没有任何文本内容,除了简单的空白。
如果在<html>
或<head>
之前或之前有任何非空白文本,浏览器将决定您要打开<body>
来包含该文本。 (这在非XHTML HTML中实际上是有效的,因为</head>
结束标记和<body>
起始标记是可选的。)这意味着关闭<head>
部分,因此内部的<meta>
标记数目<head>
将为0。
无论如何,您最好只说:
var metas= document.getElementsByTagName('meta');
因为检查它们是否在<head>
中对于有效文档是多余的; 这是允许<meta>
出现的唯一位置。
alert("Value: "+metas[i].value);
<meta>
上没有.value
,您是说.content
吗?
if (metas[i].getAttribute('name') == "toolbar"){
使用metas[i].name
。 没有理由在HTML文档上使用getAttribute
/ setAttribute
,并且在IE上存在问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.