2010-10-12 64 views
1

我是JavaScript新手,試圖找出標記信息值。 GWT代碼如下。getElementsByTagName()在IE和FF中的行爲有所不同

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> 
+0

HTML樣本? :) – Matchu 2010-10-12 20:16:01

回答

0

適用於IE7。

檢查您在<meta>結束標記之前沒有任何文本內容,而不是簡單的空格。

如果您在<html><head>中或之前有任何非空白文本,瀏覽器將決定打開<body>以包含文本。 (這是在非XHTML HTML實際上是有效的,作爲</head>結束標記和<body>開始標記是可選的。)這意味着關閉<head>部分,所以內部<head><meta>標籤的數量將爲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上存在問題。

0

試試這個:

element.attributes[value].nodeAttribute; 

As explained here

的的getAttribute()方法在 嘗試獲取for屬性時將在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()); 
+0

不是,代碼沒有達到getAttribute()。 line - alert(「Meta length:」+ metas.length);打印0和'for'循環從未得到執行。 – 2010-10-12 20:45:27

+0

@Win:也許這是一個錯誤的(不是關閉的)標籤?在它正在工作的例子。也許這是你的HTML的東西。 – BrunoLM 2010-10-12 20:58:34

相關問題