[英]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.