Javascript-Mozilla和IE中的一個(gè)函數(shù)直接量的問(wèn)題分析
更新時(shí)間:2007年08月12日 15:55:15 作者:
我在這里寫這個(gè)也是寫點(diǎn)在做js時(shí)遇到的問(wèn)題,當(dāng)個(gè)筆記.沒(méi)有想到被hax "批"了一頓,不過(guò)也是說(shuō)得有些道理的.畢竟這個(gè)內(nèi)容也不痛不癢的
一般情況下,我們?cè)贘S中用函數(shù)直接量來(lái)命名一個(gè)簡(jiǎn)單的函數(shù)。
<script type="text/javascript">
var func=function(s){window.alert(s)};
func("never-online")
</script>
這在IE或者M(jìn)ozilla中也是合法的(ECMA標(biāo)準(zhǔn)中有函數(shù)直接量的定義)。
但是IE中還有另外一種更簡(jiǎn)單的命名方式可以簡(jiǎn)化我們的代碼:
<div id="demo">http://blog.never-online.net</div>
<script type="text/javascript">
var $=document.getElementById;
alert($("demo").innerHTML);
</script>
而這在Mozilla中沒(méi)有報(bào)語(yǔ)法錯(cuò)誤,而是拋出了一個(gè)異常, 操作符非法:
下面代碼是捕獲Mozilla拋出的異常并打印出來(lái)
<div id="demo">http://blog.never-online.net</div>
<script type="text/javascript">
var $=document.getElementById;
try {
alert($("demo").innerHTML);
} catch(ex) { document.write(ex)}
</script>
異常內(nèi)容為:
[Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/non4A.htm :: :: line 22" data: no]
現(xiàn)在還不知道能不能在Mozilla的config中設(shè)置,總之寫代碼的時(shí)候要注意.
我在google上搜索 getElementById 0x8057000c 關(guān)鍵字,還是有很多類似的情況,比如
http://groups.google.co.uk/group/comp.lang.javascript/browse_thread/thread/65a1a23f5dd7c9ad/d264d04d9d768b28?tvc=2#d264d04d9d768b28
沒(méi)有更好的解決辦法,但是可以變通,比這樣寫
<div id="foo"></div>
<script>
document.$ = document.getElementById;
alert(document.$("foo").innerHTML);
</script>
因?yàn)閖s可以動(dòng)態(tài)的給對(duì)象增加屬性和方法,上面的例子在ie和moz中測(cè)試都可以通過(guò).
一般情況下,我們?cè)贘S中用函數(shù)直接量來(lái)命名一個(gè)簡(jiǎn)單的函數(shù)。
<script type="text/javascript">
var func=function(s){window.alert(s)};
func("never-online")
</script>
這在IE或者M(jìn)ozilla中也是合法的(ECMA標(biāo)準(zhǔn)中有函數(shù)直接量的定義)。
但是IE中還有另外一種更簡(jiǎn)單的命名方式可以簡(jiǎn)化我們的代碼:
<div id="demo">http://blog.never-online.net</div>
<script type="text/javascript">
var $=document.getElementById;
alert($("demo").innerHTML);
</script>
而這在Mozilla中沒(méi)有報(bào)語(yǔ)法錯(cuò)誤,而是拋出了一個(gè)異常, 操作符非法:
下面代碼是捕獲Mozilla拋出的異常并打印出來(lái)
<div id="demo">http://blog.never-online.net</div>
<script type="text/javascript">
var $=document.getElementById;
try {
alert($("demo").innerHTML);
} catch(ex) { document.write(ex)}
</script>
異常內(nèi)容為:
[Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/non4A.htm :: :: line 22" data: no]
現(xiàn)在還不知道能不能在Mozilla的config中設(shè)置,總之寫代碼的時(shí)候要注意.
我在google上搜索 getElementById 0x8057000c 關(guān)鍵字,還是有很多類似的情況,比如
http://groups.google.co.uk/group/comp.lang.javascript/browse_thread/thread/65a1a23f5dd7c9ad/d264d04d9d768b28?tvc=2#d264d04d9d768b28
沒(méi)有更好的解決辦法,但是可以變通,比這樣寫
<div id="foo"></div>
<script>
document.$ = document.getElementById;
alert(document.$("foo").innerHTML);
</script>
因?yàn)閖s可以動(dòng)態(tài)的給對(duì)象增加屬性和方法,上面的例子在ie和moz中測(cè)試都可以通過(guò).
相關(guān)文章
解決火狐瀏覽器下JS setTimeout函數(shù)不兼容失效不執(zhí)行的方法
今天檢查自己用JQuery+AJAX+PHP做的網(wǎng)站后臺(tái)登錄檢測(cè),愛(ài)其他瀏覽器中兼容性還不錯(cuò) 結(jié)果到了火狐(FireFox)瀏覽器下setTimeout這個(gè)JS內(nèi)置函數(shù)不執(zhí)行了,本文將提供詳細(xì)的解決方法2012-11-11微信小程序?qū)崿F(xiàn)商品分類頁(yè)過(guò)程結(jié)束
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)商品分類頁(yè)列表方法,商品分類頁(yè)主要是需要實(shí)現(xiàn)商品類目和對(duì)應(yīng)商品標(biāo)題的聯(lián)動(dòng)跳轉(zhuǎn),文中過(guò)程詳細(xì),感興趣的小伙伴們可以參考一下2023-05-05JS使用ActiveXObject實(shí)現(xiàn)用戶提交表單時(shí)屏蔽敏感詞功能
這篇文章主要介紹了JS采用ActiveXObject實(shí)現(xiàn)用戶在提交表單時(shí)屏蔽敏感詞的功能的相關(guān)資料,需要的朋友可以參考下2017-06-06js判斷輸入是否中文,數(shù)字,身份證等等js函數(shù)集合
收集的比較多,建議大家查找搜尋,常用的js判斷函數(shù)2008-09-09基于JS實(shí)現(xiàn)限時(shí)搶購(gòu)倒計(jì)時(shí)間表代碼
本文給大家分享一段簡(jiǎn)單的代碼基于js實(shí)現(xiàn)限時(shí)搶購(gòu)倒計(jì)時(shí)間表功能,非常不錯(cuò),代碼簡(jiǎn)單易懂,需要的的朋友參考下吧2017-05-05JavaScript實(shí)現(xiàn)音樂(lè)自動(dòng)切換和輪播
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)音樂(lè)自動(dòng)切換和輪播效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11一定有你會(huì)用到的JavaScript一行代碼實(shí)用技巧總結(jié)
這篇文章主要為大家介紹了一定有你會(huì)用到的JavaScript一行代碼總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07