今天寫了一個 javascript 的測試小程式。小程式要在 IE, Firefox, Safari, Chrome 四個瀏覽器上測試。為了分辨不同的瀏覽器,會測驗 document.all。用了之後,發現怪怪的。下面我將異常處列出來。
- 程式用法:
<script type='text/javascript'>
document.write( document.all +' / / ');
if( document.all == undefined )
document.write( undefined );
else
document.write( document.all );
</script> - 執行結果:
[object HTMLAllCollection] / / undefined
- 上例在四大瀏覽器測試,輸出結果如下:
- IE:[object HTMLCollection] / / [object HTMLCollection]。
- Firefox:undefined / / undefined。
- Safari:[object HTMLCollection] / / undefined。
- Chrome:undefined / / undefined。
有沒有發現 Safari 的輸出怪怪的。我將程式修改了一下。
- 程式用法:
<script type='text/javascript'>
document.write( document +' / / ');
if( document == undefined )
document.write( undefined );
else
document.write( document );
</script> - 執行結果:
[object HTMLDocument] / / [object HTMLDocument]
- 上例在四大瀏覽器測試,輸出結果如下:
- IE:[object HTMLDocument] / / [object HTMLDocument]。
- Firefox:[object HTMLDocument] / / [object HTMLDocument]。
- Safari:[object HTMLDocument] / / [object HTMLDocument]。
- Chrome:[object HTMLDocument] / / [object HTMLDocument]。
這回 Safari 回復正常了。我上網查了查,學了一招,將程式再改寫。
- 程式用法:
<script type='text/javascript'>
document.write( document.all +' / / ');
if( typeof(document.all) == undefined )
document.write( undefined );
else
document.write( document.all );
</script> - 執行結果:
[object HTMLAllCollection] / / [object HTMLAllCollection]
- 上例在四大瀏覽器測試,輸出結果如下:
- IE:[object HTMLCollection] / / [object HTMLCollection]。
- Firefox:undefined / / undefined。
- Safari:[object HTMLCollection] / / [object HTMLCollection]。
- Chrome:undefined / / undefined。
這次的輸出結果,終於回復了和諧性;訣竅就是用了 typeof(document.all)。