2010-01-23 33 views
1

爲了節省空間,我在代碼中爲函數做了一大堆別名。它在FF中工作正常,但現在我試圖添加對IE的支持,並且它不開心。Javascript,aliases和IE

j=String; 
f0=j.fromCharCode; 
j=j.prototype; 
j.f1=j.indexOf; 
j.f2=j.lastIndexOf; 
j.f3=j.concat; 
j.f4=j.substring; 

function alias(c,e){return function(){return c[e].apply(c,arguments);};} 

w=window.location; 
d=document; 
b=document.body; 
f5=alias(d,"createElement"); 
f6=alias(b,"appendChild"); 
f7=alias(d,"getElementById"); 
...etc 

我知道alias()函數在IE中不起作用。有兩種瀏覽器都可以使用另一種方式嗎?

回答

2

這是沒有直接回答你的問題這些問題的答案之一,但我認爲這將有助於:

你應該寫你的代碼沒有所有的短期變量和別名。寫完整的形式,因爲它會更容易維護。

然後,當您將代碼移至生產時,請將您的代碼通過縮放器進行混疊並縮短。

你可以嘗試一下這兩種來爲你做它(還有很多其他的優秀人才,以及):

  1. Google Closure Compiler
  2. Dean Edwards Packer(打開「收縮變量」)
+0

完全同意。編寫無法讀取的代碼就像在腳下射擊自己。讓一些自動化的工具讓你無法讀取(壓縮)。 – 2010-01-23 00:20:00

+0

謝謝,我知道。在這種情況下,打包機是不可能的(不能使用這些符號),所以我不得不手動縮短它。代碼已經完成,只是由於IE中的別名而出現錯誤。 @Miguel這不是我將要編輯或維護的代碼類型,它的目的只是簡短而快速。 – graw 2010-01-23 00:20:02

+0

@unknown我不想讓你擱淺,但我的機器上沒有IE。我嘗試了一些通過browserlab(和瘋狂的'innerHTML = resultOftext')來改變長距離無濟於事。對不起,我無法提供更多幫助。 – 2010-01-23 01:10:26