getElementsByTagName()在IE和FF中的行为有所不同

时间:2010-10-12 20:10:59

标签: javascript internet-explorer firefox gwt browser

我是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>

2 个答案:

答案 0 :(得分:0)

试试这个:

element.attributes[value].nodeAttribute;

As explained here

  

getAttribute()方法将返回   Internet Explorer中的“null”时   试图获取a的for属性   标签元素。

可能是同一个问题......

好看:

在这个例子中,它正在使用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() );

答案 1 :(得分:0)

在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);

.value上没有<meta>,您的意思是.content吗?

        if (metas[i].getAttribute('name') == "toolbar"){

使用metas[i].name。没有理由在HTML文档上使用getAttribute / setAttribute,并且IE上存在问题。