国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Javascript-Mozilla和IE中的一個函數直接量的問題分析

2019-11-21 01:59:16
字體:
來源:轉載
供稿:網友
我在這里寫這個也是寫點在做js時遇到的問題,當個筆記.沒有想到被hax "批"了一頓,不過也是說得有些道理的.畢竟這個內容也不痛不癢的

一般情況下,我們在JS中用函數直接量來命名一個簡單的函數。


<script type="text/javascript">
var func=function(s){window.alert(s)};
func("never-online")
</script>

這在IE或者Mozilla中也是合法的(ECMA標準中有函數直接量的定義)。

但是IE中還有另外一種更簡單的命名方式可以簡化我們的代碼:

<div id="demo">http://blog.never-online.net</div>
<script type="text/javascript">
var $=document.getElementById;
alert($("demo").innerHTML);
</script>

而這在Mozilla中沒有報語法錯誤,而是拋出了一個異常, 操作符非法:
下面代碼是捕獲Mozilla拋出的異常并打印出來

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

異常內容為:
[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]

現在還不知道能不能在Mozilla的config中設置,總之寫代碼的時候要注意.

我在google上搜索 getElementById 0x8057000c 關鍵字,還是有很多類似的情況,比如

http://groups.google.co.uk/group/comp.lang.javascript/browse_thread/thread/65a1a23f5dd7c9ad/d264d04d9d768b28?tvc=2#d264d04d9d768b28

沒有更好的解決辦法,但是可以變通,比這樣寫

<div id="foo"></div>
<script>
document.$ = document.getElementById; 
alert(document.$("foo").innerHTML);
</script>

因為js可以動態的給對象增加屬性和方法,上面的例子在ie和moz中測試都可以通過.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 远安县| 永德县| 鹤岗市| 马边| 吴堡县| 阳城县| 汉沽区| 清镇市| 曲沃县| 济源市| 吐鲁番市| 富锦市| 内黄县| 龙山县| 荣昌县| 紫金县| 泸西县| 武隆县| 东城区| 福安市| 清水河县| 徐水县| 宜君县| 奈曼旗| 金昌市| 弥渡县| 互助| 房产| 柘城县| 华阴市| 临汾市| 沁源县| 靖边县| 仁怀市| 南溪县| 二连浩特市| 兴海县| 舒城县| 泾源县| 陵川县| 津南区|