關於app上頁面和js的調試


不久前折騰了一晚上關於app上的頁面和js的調試:

首先得准備幾個比較比較常用的工具:

1、chrome(這個都沒有你還干啥fe呀)

2、Fiddler(抓包神器,基本也是必備咯)

3、sublime(編輯器至少得有一個吧)

then?

打開Fiddler,配置設置啥的都不在這里說了,篇幅有點長,PS:(不過比較方便的一個東西就是Fiddler上可以配hosts,不用再hosts文件下去配hosts了)

這里說一下app里面的調試和一般的M端web調試的不同,在M端調試時把頁面和js代理到本地修改就ok了,但是app里面就不一樣了,app里面的頁面和js很倔強,走緩存走的很嚴重,所以在這里我們簡單敘述一下app的頁面和js調試;

then?

假如前面的工具和配置都OK了,能正常抓包

一、頁面html調試

1、抓包:打開Fiddler,用手機訪問需要調試的頁面,這時Fiddler上面會抓到一個記錄,如下圖:

then?

2、ctrl+u拷貝出抓到的地址放到chrome里面訪問,這樣就可以看到手機上面訪問的頁面了,then在chrome里面再ctrl+u就可以查看頁面源碼,把源碼copy出來單獨起一個頁面,在Fiddler里面把線上訪問的頁面代理到本地,注意這里我們把單起的頁面的title改一下方便我們觀察是否代理本地成功了:

3、我們在代理的時候需要注意到的是在app里面訪問Fiddler抓到的地址的最后包括os和webaddress,如果是安卓的機器的話你需要手動吧os改成ios才能正確訪問;

另外一個問題就是webaddress在每次訪問的時候都會動態改變,所以我們在代理的時候不要把后面的webaddress=xxxxxx加上,否者,你懂得

4、像上面的這樣代理成功后訪問app上面的頁面,......頁面咋沒變? 當然沒變咯我們在做一下處理,改一下頁面顯示(在代理到本地的html頁面上的顯示部分加點東西),像這樣:

好了頁面代理差不多就是這樣,你可以在本地任意修改你的頁面了,app上也會有和chrome同步的變化

then?

二、app上js的調試:

1、首先你的指導你要調試那個js,也就是那個js出問題了,這個定位問題的速度需要經驗,不如說對全站業務邏輯比較熟悉的話,一看就知道是啥出了問題,是哪個js出了問題

一般來說我們是通過bug的view表現頁面元素去找對應的id或者class,或者知道一些實現的方法名/參數名,然后通過在chrome里面搜索對應的js

2、ok,找到相應的js后又把它代理到本地,這里需要注意的是我們一般去svn找到最新的代碼down下來放到本地,然后把線上的js代理到本地,

new.js是從svn上down下來的mclient.publish2.js,

3、代理好了之后,在new.js里面加點可以證明代理好了的代碼,alert()最好,為啥?因為app上不認console,試着在chrome上看看(當然這里也需要注意到一點就是為了方便看到js是否真正代理到本地了,我們也需要像html一樣做,在js第一行做一些標記,表明這個不是線上的js),被嚇到了吧,啥反應都沒得;為什么呢?

模板上加載的js明明是:

<script type="text/javascript" charset="utf-8" src="http://pic2.58.com/m58/app58/m_static/js/mclient.publish2.js?cachevers=575"></script>

也把它代理到了本地:

為什么就不行呢?這就是app上比較倔強的地方,由於app里面會緩存已經加載好了的js,app上面也不能像瀏覽器一樣可以清除緩存和強制刷新,所以基本都是通過?加上版本號來更新js(這個不同公司更新方法不同,具體的請移步張雲龍老師的blog靜態資源的緩存更新),版本號一致的話,app將不會更新這個js(不會發出請求),所以代理的js不會生效,

解決辦法就是讓它更新,在模板里面把加載的js版本號改變一下:

ok,改好了,然后又試試!......還是不行,為什么,應該大家都懂,當時搗騰這個的時候進入了一個誤區,代理的時候的地址帶了版本號575的,然而模板里面請求的是帶版本號576的js,很明顯代理不成功嘛,

then

解決辦法有兩個:

a、把代理的時候的地址帶了版本號575改成576,這個辦法比較挫,因為每次修改完本地的new.js你需要看到修改后的效果你都需要做兩件事情,1就是把模板里面加載的js版本號增加一下,2就是需要把代理的版本號也改成和模板加載的js版本號一致

b、代理的時候不帶版本號:

這樣的話就不需要你每次修改本地js都去改代理的js版本號了,而只需要把模板上的版本號增加一下就ok了

then?

end

文章沒review,有錯請大家指出

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM