再談ie和firefox下的document.all屬性
更新時間:2009年10月21日 14:25:10 作者:
很多情況下,我們是使用document.all來判斷當前瀏覽器是ie還是 Mozilla 。
例如下面的代碼:
<html>
<body>
<SCRIPT LANGUAGE="JavaScript">
<!--
if(document.all)
alert("this is a IE");
else
alert("this is a Mozilla");
//-->
</SCRIPT>
</body>
</html>
在IE瀏覽器會輸出 “this is a IE”;
而在firefox瀏覽器中會輸出"this is a Mozilla"。
但這樣是不能直接就認為在 firefox中 是不支持 document.all屬性方法的。
下面一段代碼,在IE和firefox瀏覽器下都運行正常
<html>
<body>
<input type="text" id="txt" value="ddd"/>
<SCRIPT LANGUAGE="JavaScript">
<!--
var v = document.all.txt.value;
alert(v);
//-->
</SCRIPT>
</body>
</html>
這是因為較新FF對all做了特殊處理,JS在招行過程中檢測到只有單獨的all屬性是,就會返回JSVAL_VOID(也就是false)值;
當JS在招行過程中檢測到形如'if (o.p)...' or '(o.p) ?...:...', 則回返回一個HTMLCOLLECTION對像.
而在GOOGLE瀏覽器中,則對all有雙重分處,既是一個COLLECTION又是一個JS VOID(false)值.
復制代碼 代碼如下:
<html>
<body>
<SCRIPT LANGUAGE="JavaScript">
<!--
if(document.all)
alert("this is a IE");
else
alert("this is a Mozilla");
//-->
</SCRIPT>
</body>
</html>
在IE瀏覽器會輸出 “this is a IE”;
而在firefox瀏覽器中會輸出"this is a Mozilla"。
但這樣是不能直接就認為在 firefox中 是不支持 document.all屬性方法的。
下面一段代碼,在IE和firefox瀏覽器下都運行正常
復制代碼 代碼如下:
<html>
<body>
<input type="text" id="txt" value="ddd"/>
<SCRIPT LANGUAGE="JavaScript">
<!--
var v = document.all.txt.value;
alert(v);
//-->
</SCRIPT>
</body>
</html>
這是因為較新FF對all做了特殊處理,JS在招行過程中檢測到只有單獨的all屬性是,就會返回JSVAL_VOID(也就是false)值;
當JS在招行過程中檢測到形如'if (o.p)...' or '(o.p) ?...:...', 則回返回一個HTMLCOLLECTION對像.
而在GOOGLE瀏覽器中,則對all有雙重分處,既是一個COLLECTION又是一個JS VOID(false)值.
相關文章
javascript 復雜的嵌套環(huán)境中輸出單引號和雙引號
如果簡單的嵌套一般都是外面用雙引號,則里面用單引號,反之亦同,如果特別負責的嵌套大家看下如下的方法。2009-05-05

