原創|其它|編輯:郝浩|2009-07-08 10:33:06.000|閱讀 490 次
概述:JavaScript 函數直接量在FF引發的錯誤,寫了一個動態添加或刪除元素的方法。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
寫了一個動態添加或刪除元素的方法 ,如下:
其中的局部變量 action 在根據傳入的動作類型分別初始化為 parentNode.appendChild和parentNode.removeChild 的字符串形式。
而實際上,這二個都是一個DOM函數。只不過,我這里,把函數名以字符串的形式賦給action.
在接下來,調用action時,使用了eval來執行對應的函數。
上面這段代碼在IE下執行沒有任何問題,但是,在FF下,卻報:Illegal operation on WrappedNative prototype object 的異常。
到網上搜尋一番,原來,把函數指針直接賦給某個變量(也就是函數直接量)再執行的話,在FF下確實會報這個異常。
變通方法,就是創建一個匿名方法,并將其賦給action變量。如下:
這樣,這段代碼在FF下的執行就沒有任何問題了。
類似的情況還有:
var $=document.getElementById;
alert($("demo").innerHTML);
這段代碼也會報一樣的錯誤,變通方法 :
var $=function(obj){ return typeof obj==='string' ?
document.getElementById(obj) : obj ;}
或者 document.$=document.getElementById
個人認為:在FF下是不能直接將函數指針指定賦予一個變量的 ?
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園