js作為客戶端語言(當然它也可以作服務端語言),非常強悍,一般情況下,我們都是在開發階段不停的改,然后上線之后就作為穩定運行的代碼。
然而有時候可能因為js寫得有問題,導致上線后,某些功能無法使用,這就悲催了,而且一般的公司上線應該都不會很容易。
那么對於這種js一類的修改,如果能在本地臨時生效,做一些緊急問題的修復,就很重要了。(我也是遇到這個坑,只要把這次臨時問題修復,等下一個功能代碼要上線時,再修復也是可以的)
那么,怎樣做到本地修改js文件,從而達到代碼運行ok的效果呢? 本文將會給出多種解決方案:
一、 使用fiddler攔截請求更改參數!!!
如果是因為某些必要參數傳遞不對,從而導致服務端無法正常運行,那么我們可以直接攔截請求,修改參數,再次發送到服務端,從而規避該問題。
這種情況一般發生在使用ajax訪問服務端程序時出現,比如某個值因為某種原因,導致js發送ajax請求時,少了某個必要參數,從而導致服務端報參數錯誤。
具體解決辦法就是:下載並安裝http調試神器fiddler, 設置對該站點的攔截請求如: bpu http://a.com, 在攔截到后,添加該必要參數,點擊繼續請求,從而達到通過服務端驗證的需求,如果要求多次操作,那么還可以設置自動修改攔截請求參數的設置,具體方法請自行研究fiddler自動攔截請求方法。
當然了,這種請求主要針對http協議,對於https還是顯得有些為難的,這也是為什么https會如此受追棒的原因吧。

二、 通過使用瀏覽器插件Tampermonkey,動態修改js代碼!!!
如果需要修改處理邏輯較多,那么,可以借助Tampermonkey插件,直接覆蓋某js文件,從而達到請求更改的處理。頁面部分處理如下:
主要填寫需要替換的js文件的路徑,然后寫需要覆蓋的js邏輯,保存,刷新即可生效。
三、 直接通過控制台運行代碼,覆蓋原有代碼生效!!!
我平時主要使用控制台來計算一些自己試驗性質的代碼,但是后來我發現,這個功能完全可以覆蓋到真正生產中的代碼里去。
比如有一個按鈕的監聽事件(假設使用jquery寫的)
$('#id').on('click', function() {
alert(111);
});
那么,如果,如果我想改怎么辦? 解決為,直接在控制台重新注冊該事件即可,即運行:
$('#id').off().on(function() {
alert('my alert');
});
這樣,當點擊該按鈕時,就會生效為后面代碼的功能了。
注意這里有一事件冒泡的問題,一定要先解綁事件,再注冊事件,否則會有多個事件響應。
那么,對於函數一類呢,則是直接以相同的函數名稱重寫方法即可,而根據js的運行原理,即會運行你后面寫的方法。
好了,本地修改js並生效的方法,大概就說到這里,個人感覺也夠用了。
js作為客戶端語言確實很方便,尤其是明白了發一次上線代碼不容易之后。有時真能解燃眉之急!!!
另作聲明: 雖然js可以方便本地更改js生效,但是這並不意味着js顯得太不安全了,因為這里所有的操作都是以在你本機上操作為基礎前提的,也就是說你會為你所有的更改負責,而不是js為你的安全買單!
