Ajax 板


LINE

用早上通勤時間寫一些簡短的小文章, 以拋磚引玉提出問題跟討論為主,並做到一定程度的問題回應。 以前常常會聽到很多人說 js 寫起來很痛苦, 因為很難debug ,但是筆者的經驗來講, 其實會痛苦主要是因為很多幽靈bug,比方說最近發現 tiny_mce editor 的 inlineSourceEditor plug-in, 在 safari 4.0.5 ,無內容且未點擊內容框的情形下, 直接點擊該button會造成該 browser crash ,但卻相容於其他所有 browser 。 追原碼回去看的時候發現 crash 在某iframe跟某textarea的show/hide行為, 猜測是browser 在頁面處理的bug ,對這兩行上個 1ms 的timeout 就沒問題。 諸如此類在「理論上」我們會認為沒問題, 但是實際上就是拼命出問題的地方,就是 js 的難搞之處。 所以這系列文章我想寫的是哪些算是「幽靈」問題,哪些算是「正常」bug , 幽靈問題能解就解不能解就避開或當做沒看到, 主要是針對js開發上的「痛苦經驗」跟如何避免做一個分享。 原則上我會盡量督促自己多寫一點, 不過考慮到四十分鐘車程跟暈車因素,應該是以簡短為主啦...XD 本文適合閱讀者:還沒開發過js應用,但有機會接觸的人; 已經開發過js應用,但還沒踩過這些雷的人。 --------以上是落落長前文分隔線-------- 前幾天 ed 問我,怎麼他寫了 javacript , browser一點動靜也沒有。 這是寫本文的契機,一般在寫 js 的時候最常碰到的就是, 「毫無反應,就只是個 script 」。 基本上因為瀏覽正常網頁時的 javascript error 太多了, 多到 ie 都有預設選項可以讓你避免顯示這些 error 。 常常我們在開發時也不會注意到要去把這些選項開起來, 一般講到 js debug ,正常玩前端的人第一個要想到的應該是firebug, firebug 在某些狀況下你要點開 firebug panel 才會顯示, 而且 firebug panel 有時候會被其他視窗干擾, 明明是其他子分頁視窗的bug,卻在我這個分頁顯示。 這些都是要注意的地方。 好,那有些人會問,那要怎麼去debug一些 ie only 的問題咧? ie8 請直接按 f12 開開發者工具。 ie6,ie7 底下預設有提示訊息跟除錯工具,但是通常會被關起來, 所以當你在開發時要記得打開。 他在「網際網路選項」=>「進階」=> 停用指令碼除錯(Internet Explorer) =>解除勾選 停用指令碼除錯(其他) =>解除勾選 顯示易懂的HTTP 錯誤訊息 =>解除勾選 (註:並不易懂。) ie 預設可以用 script editor 進行debug,他一樣有error break, 也有監看視窗可以用,所以要好好利用。 如果電腦是沒有裝 script editor的那種, ms 網站有得下載。 以上是環境篇,通常正常狀況下到這個時候就不會是「無消無息」了, 有錯誤訊息就可以進一步的去處理去操作。 -------- 但還有一些狀況下是在這時候還會是無消無息的, 大概簡單列出一些類型跟對應的檢查方法。 1.js檔根本沒有載入。一開始就只抓到404,所以根本不會有錯誤訊息 可以用ie6,7 裝debugbar外掛,ie8按f12看開發者工具, firebug 則是切到「網路」TAB 去看連線情形。 或者最基本的把js的連結貼到網址列去檢驗。 (手貼的話,千萬要先確定自己知道頁面跟相對路徑跟絕對路徑的差異!) 2.js檔有載入,但是script 寫的跟自己預期的行為不一樣。 比方說以下的例子 <script> document.getElementById("hello").innerHTML="hi";</script> <div id="hello">change me!</div> 這就是常見的時間差錯誤,雖然看起來一切都很正常, 但是他就是註定會因為hello在當下還沒init 所以就沒有反應。 以純 js 來講比較不會有問題,因為他會冒error, 但如果是以jQuery $("#hello").html("hi")的話,就很有可能你會忽略了。 這種情形的debug方法,直接一點的就是開firebug或ie8開發者工具, 直接下break point 在該行,看看在該時間點hello取dom到底發生什麼問題, 然後你可能就會發現他是 [] 或是 null ,就會因此了解到邏輯錯誤。 總之,在你認為應該要經過的地方埋伏,透過step by step的逐行執行, 去追蹤內部的函式看哪個地方是不符合你的期待的。 這個過程可小可大,唯一的困難點就在於如果碰到被compressor壓過的code, 會陷入五里霧,這種情形要處理就是高級技巧了...這裡先不談。 簡單跟刻苦一點就是直接插alert 在前後,用類似十分逼近的方式去看內容。 寫到這裡發現車子下交流道了...先收尾在這裡。XD 要記得js上很多幽靈bug,就算你邏輯對,還是有可能發生問題, 所以邏輯只是基本輔助,錯誤訊息是主要參考, 再加上部分奇怪的針對browser微調。 -- 期待下次再會~散 -- 我:一半的日子讓你說,我聽你說你的所有______________________________________ ______________________________________一半的日子我想說,對你說過去的所有:我 _______________________________________________________ 在討論中妥善扮演兼具聆聽與分享的角色,是我們一生的課題。 _______________________________________________________ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.136.222.245
1F:推 megaman1206:推TonyQ大 06/07 13:07
2F:推 etchen:推:) 06/07 17:39
3F:推 SHANGOYANYI:推 獲益斐淺 06/07 19:53
4F:推 grassboy2:五樓都用alert debug的~ (逃~) 06/08 00:00
5F:推 iam87king:我是真的都用alert debug的(挺) 06/08 00:22
6F:推 tomin:http://validator.w3.org/checklink 也可檢查檔案連結 06/08 01:44
7F:推 j100002ben:我是用document.write()+alert的~~~ 06/08 04:53
8F:推 No:推~ alert debug +1 06/08 14:51
9F:推 knuckles:推...我也都是用alert XD 06/08 16:59
10F:推 hirabbitt:alert+1 不過有時候會產生時間差 06/08 19:29
11F:推 windwofswold:時間差及載入先後順序問題真的很重要 06/20 10:40
12F:推 dreamerslab:受用 :) 05/21 08:59







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP