08 三月 2009 @ 12:29 上午 
事情是這樣的,safari4隆重推出之時,號稱是世界上最快的javascript engine:松鼠魚,我就很開心的給他下載下來玩玩看,結果,原本在safari2, 3都正常的頁面,竟然在safari4掛掉了,OK,這可是個大問題,於是我開始想辦法debug。頭一個就遇到問題,我想辦法要打開safari4的debug mode,但是怎樣試都找不到,雖然後來google 有找到windows版本的方式:Enable Debug Mode in Safari4,終於讓develop menu出現了,但是….裡頭的選項我怎麼點都沒用!! Fine,也許是windows版本跟MAC版本也有差異吧,那我就直接找台MAC來試,終於成功打開debug mode了。 結果我發現,原來是因為之前為了解決IE6 memory leak的問題,改善了一些createElement的寫法:請參考Finally, the alternative fix for IE6′s memory leak is available,主要觀念是利用try finally來使createElement之後的變數能被回收掉,而不再儲存於記憶體。

//this helps to fix the memory leak issue
try {
return obj;

} finally {
obj = null;
}

測試頁面(safari4 beta會出錯) 這樣的寫法在其他瀏覽器都沒問題的,safari4竟然就這樣給他錯了,原因就是出在finally之後,obj被clear了,只要沒有這一句就正常,那…..OK,原本這個fix就是針對IE6而寫的,所以只要判斷IE6在做fix就行了。有趣的是,重複append空物件到DOM節點的次數到達某個次數以上,safari4就crash了(驚!)。 不過這到底算不算bug我也不曉得,也許safari4底層把memory leak的事情解決掉了。這就以後再繼續探究了。 這又再印證了一句話: 「WYSIWYG -> WYSIWGK (What We See Is What God Knows)
Posted By: BLACKBING
Last Edit: 08 三月 2009 @ 12:29 上午

EmailPermalink
Tags


 

Responses to this post » (None)

 
Post a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


 Last 50 Posts
 Back
Change Theme...
  • Users » 30
  • Posts/Pages » 64
  • Comments » 35
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight

About Me



    No Child Pages.

留言板



    No Child Pages.

Album



    No Child Pages.