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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP