亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

js調(diào)試系列 源碼定位與調(diào)試[基礎(chǔ)篇]

 更新時(shí)間:2014年06月18日 11:16:51   投稿:mdxy-dxy  
如果看了1, 2兩篇,你對(duì)控制臺(tái)應(yīng)該有一個(gè)初步了解了,今天我們來個(gè)簡單的調(diào)試。昨天留的三個(gè)課后練習(xí),差不多就是今天要講的內(nèi)容

我們先來處理第一個(gè)問題:1. 查看文章下方 推薦 這個(gè)功能所調(diào)用的函數(shù)源碼
其實(shí)非常簡單,點(diǎn)放大鏡選中那個(gè)推薦即可。

這個(gè)  votePost(cb_entryId,'Digg')  就是推薦按鈕所調(diào)用的函數(shù)了,是不是非常簡單。

第二個(gè)問題,定位到函數(shù)所在文件位置。
其實(shí)也是非常簡單的,當(dāng)然,不熟悉控制臺(tái)的朋友也許不知道怎么看。
我在控制臺(tái)輸入 votePost 然后回車,

函數(shù)源碼粗顯啦,并且在右下角有個(gè)鏈接 blog-common.js?v=WE8o1xrgcTu07QVvwYqERqD7AA8fdJp_dgoE-crAT3k1:1 這個(gè)是什么意思呢?
后面的 v=WE8o1xrgcTu07QVvwYqERqD7AA8fdJp_dgoE-crAT3k1 直接忽略好了。

ps: 如果想知道這個(gè)是什么東西,其實(shí)就是個(gè)版本號(hào),至于什么作用,往往是防止緩存的,具體自己上網(wǎng)搜索吧。
blog-common.js:1 差不多就是這個(gè)意思。。
blog-common.js 是這個(gè)函數(shù)所在的js文件
1 是代碼所在的行號(hào)。

直接點(diǎn)擊這個(gè)鏈接,就可以跳轉(zhuǎn)到 Sources 面板,這個(gè)就是源碼面板,調(diào)試最重要的一個(gè)功能,之后會(huì)慢慢介紹。

可是所有代碼都在一行,我們改怎么看? 4946 個(gè)字符呢,全縮在一行上。。
chrome 給我們提供了一個(gè)代碼格式化的功能,點(diǎn)擊下方那個(gè) Pretty print 按鈕即可格式化代碼。

格式化完畢之后就是非常美觀的代碼了,至于看不看的懂,那是另一回事了。
有的看不懂可能是代碼被UglifyJS,Google's Closure之類的工具編譯過,如 jquery.min.js 文件。
還有可能是水平太次了,暫時(shí)看不懂大神寫的代碼,那我也無能為力,你只能自己加油了努力提升實(shí)力了。
如果格式化夠找不到函數(shù)所在位置,也不要著急,有我在,慌啥?
回到剛才控制臺(tái)面板。

你欣喜的發(fā)現(xiàn),blog-common.js?v=WE8o1xrgcTu07QVvwYqERqD7AA8fdJp_dgoE-crAT3k1:91
行號(hào)變成 91 了,現(xiàn)在再點(diǎn)擊這個(gè)鏈接,就可以跳轉(zhuǎn)到對(duì)應(yīng)格式化后的位置了,是不是超方便。。

最后一個(gè)問題,修改函數(shù)使其無效,這個(gè)最簡單了,比剛才的簡單多了,可是很多人不會(huì)操作所以我特地拿出來講一下。
首先,我們知道了 推薦 這個(gè)功能調(diào)用的函數(shù)是  votePost(cb_entryId,'Digg') ,而且他是直接寫是 html 上通過 onclick 綁定的。
所以這個(gè)函數(shù)是一個(gè)全局函數(shù),到處都可以調(diào)用,那這意味著什么呢?
意味著我們可以修改啊,好比一個(gè)全局變量,你在哪都能修改對(duì)吧,那全局函數(shù)也是應(yīng)該道理。
所以我們直接修改為空函數(shù)即可。
 votePost = function () {};  或者  votePost = $.noop;  都可以。$.noop 是 jQuery 為我們提供的空函數(shù),方便我們使用。


現(xiàn)在 votePost 就是一個(gè)空函數(shù),所以你點(diǎn)擊 推薦 按鈕是不會(huì)發(fā)生任何事情的。
當(dāng)然刷新頁面后會(huì)重新生效,我們只是在頁面上調(diào)試修改而已,沒有去改博客園的源碼,是不可能永久生效的。
所以調(diào)試的意思就是查找與排除錯(cuò)誤的過程,如果定位到錯(cuò)誤源了,修改下然后測(cè)試,如果不對(duì),刷新后重新修改,這樣就不必修改實(shí)際文件而導(dǎo)致不可恢復(fù)了。

今天的內(nèi)容差不多就這些了,其實(shí)現(xiàn)在很少有直接全局函數(shù)給你調(diào)試的,因?yàn)楝F(xiàn)在 jQuery 風(fēng)靡,各種 click, on 之類的事件綁定,導(dǎo)致源碼定位非常繁瑣。
好在我之前寫了一篇,比較詳細(xì)的分析了這個(gè)問題,詳情請(qǐng)參閱《淺談 jQuery 事件源碼定位問題
其他框架我也不熟,所以沒分析,不過思路其實(shí)是差不多的,必然都會(huì)有一個(gè)事件管理機(jī)制。

今天知識(shí)點(diǎn)不多,但是要自己動(dòng)手鞏固下,不然會(huì)秒忘的。

課后練習(xí):
1. 分析 votePost 函數(shù)是如何實(shí)現(xiàn) 推薦 的。
2. 動(dòng)態(tài)調(diào)試分析 votePost。(要結(jié)合斷點(diǎn)知識(shí))

明天要講斷點(diǎn)與動(dòng)態(tài)調(diào)試,我也沒找到合適的題目,就先湊合著做吧,如果你有合適的東西需要?jiǎng)討B(tài)調(diào)試的,請(qǐng)跟帖。。

相關(guān)文章

  • JavaScript獲取GridView選擇的行內(nèi)容

    JavaScript獲取GridView選擇的行內(nèi)容

    一般GridView第一列是多選框CheckBox,負(fù)責(zé)標(biāo)記當(dāng)前行是否被選中,后面可以有文本框TextBox,下拉框DropDownList,標(biāo)簽Lable
    2009-04-04
  • js獲取元素的外鏈樣式的簡單實(shí)現(xiàn)方法

    js獲取元素的外鏈樣式的簡單實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨s獲取元素的外鏈樣式的簡單實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 解決mui框架中switch開關(guān)通過js控制開或者關(guān)狀態(tài)時(shí)小圓點(diǎn)不動(dòng)的問題

    解決mui框架中switch開關(guān)通過js控制開或者關(guān)狀態(tài)時(shí)小圓點(diǎn)不動(dòng)的問題

    今天小編就為大家分享一篇解決mui框架中switch開關(guān)通過js控制開或者關(guān)狀態(tài)時(shí)小圓點(diǎn)不動(dòng)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JS如何使用剪貼板操作Clipboard API

    JS如何使用剪貼板操作Clipboard API

    瀏覽器允許JavaScript腳本讀寫剪貼板,自動(dòng)復(fù)制或粘貼內(nèi)容。一般來說,腳本不應(yīng)該改動(dòng)用戶的剪貼板,以免不符合用戶的預(yù)期。但是,有些時(shí)候這樣做確實(shí)能夠帶來方便,比如"一鍵復(fù)制"功能,用戶點(diǎn)擊一下按鈕,指定的內(nèi)容就自動(dòng)進(jìn)入剪貼板。本文將介紹3種方法來實(shí)現(xiàn)。
    2021-05-05
  • p5.js入門教程之小球動(dòng)畫示例代碼

    p5.js入門教程之小球動(dòng)畫示例代碼

    本篇文章主要介紹了p5.js入門教程之小球動(dòng)畫示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • JavaScript 禁止用戶保存圖片的實(shí)現(xiàn)代碼

    JavaScript 禁止用戶保存圖片的實(shí)現(xiàn)代碼

    這篇文章主要介紹了JavaScript 禁止用戶保存圖片的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 微信小程序如何調(diào)用圖片接口API并居中顯示

    微信小程序如何調(diào)用圖片接口API并居中顯示

    這篇文章主要介紹了微信小程序如何調(diào)用圖片接口API并居中顯示,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • js輸入中文效果

    js輸入中文效果

    js輸入中文效果...
    2006-09-09
  • js大數(shù)相加出現(xiàn)精度丟失、運(yùn)算錯(cuò)誤的問題

    js大數(shù)相加出現(xiàn)精度丟失、運(yùn)算錯(cuò)誤的問題

    js中數(shù)字類型長度達(dá)到16位時(shí),進(jìn)行加減乘除運(yùn)算,會(huì)出現(xiàn)精度丟失,運(yùn)算結(jié)果錯(cuò)誤的問題,本文講述精度丟失的原因及解決辦法
    2023-08-08
  • 詳解JSON和JSONP劫持以及解決方法

    詳解JSON和JSONP劫持以及解決方法

    這篇文章主要介紹了詳解JSON和JSONP劫持以及解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論