跨瀏覽器的JavaScript效能檢測工具
提出問題
如果識別出頁面中JavaScript函式的效能問題,在不同瀏覽器下有不同的測試工具:
Firefox下使用Firebug的Profile工具
Chrome下使用內建的Profile工具
IE9下也有Profile工具
雖然大家的功能一個比一個炫,但是始終解決不了兩個問題:
如何只檢測指定名稱空間下的函式效能,否則會產生大堆的無用資料。
不能跨瀏覽器使用,沒有統一的參照物。同時不同工具之間還有一定差異的背景噪音影響。
還有一點就是仍然佔據主流的IE7和IE8沒有內建的JavaScript效能檢測工具。
尋求解決方案
首先在網上找到的一篇文章是John Resig在2008年6月發表的一篇文章,是夠古老的了,不過還是非常有借鑑意義。
我們來看一下它的核心程式碼,這段程式碼用來處理jQuery.fn下的所有函式:
for(var method in jQuery.fn)(function(method){
if(method =="init")return;
var old = jQuery.fn[method];
jQuery.fn[method]=function(){
if(!internal&& curEvent){
internal=true;
var m = curEvent.methods[curEvent.methods.length]={
name: method,
inLength:this.length,
args: formatArgs(arguments)
};
var start =(newDate).getTime();
var ret = old.apply(this, arguments);
m.duration =(newDate).getTime()- start;
if(curEvent.event=="inline") curEvent.duration += m.duration;
if(ret && ret.jquery) m.outLength = ret.length;
internal=false;
return ret;
}else{
return old.apply(this, arguments);
}
};
});
從這段程式碼中,我們看到如下一些步驟:
將需要處理的函式備份起來:var old = jQuery.fn[method];
使用一個新的函式覆蓋此函式:jQuery.fn[method] = function () {
-
在新函式內,呼叫備份的原始函式,並在呼叫前後新增計時程式碼,以確定本次呼叫這個原始函式的時間:
var start = (new Date).getTime(); var ret = old.apply(this, arguments); m.duration = (new Date).getTime() - start;
有了這個核心概念,我們可以寫個自己的JavaScript的Profile功能,而不僅僅是侷限於檢測jQuery程式碼,我們要讓使用者自己指定要檢測的JavaScript名稱空間!
我的開源實現
它的最大特點:
可以指定測試的名稱空間
可以跨瀏覽器使用
使用起來非常方便,只需要如下幾個步驟:
-
在頁面的最後引入jprofile.js。(這也是安裝jprofile開源解決方案的全部步驟!)
-
開啟頁面,可以看到右上角的那個Enable jProfile按鈕:
-
點選那個按鈕,會彈出一個對話方塊,輸入你要檢測的名稱空間,比如"jQuery":
點選確定,頁面會自動重新整理,並顯示jProfile工具條。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1747/viewspace-2800922/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 跨瀏覽器測試需要面臨哪些挑戰?跨瀏覽器測試工具分享瀏覽器
- 為什麼跨瀏覽器測試很重要?7款跨瀏覽器測試工具請查收!瀏覽器
- JavaScript中的瀏覽器檢測和DOM基礎JavaScript瀏覽器
- 瀏覽器開發者工具開啟檢測瀏覽器
- 6款好用跨瀏覽器測試工具,高價效比軟體檢測機構安利瀏覽器
- 怎麼檢測瀏覽器劫持,瀏覽器劫持的方法介紹瀏覽器
- 十分好用的跨瀏覽器測試工具,建議收藏!!!瀏覽器
- 瀏覽器跨域瀏覽器跨域
- 十款好用跨瀏覽器測試工具分享,好物值得收藏!!!瀏覽器
- 常見瀏覽器終端檢測瀏覽器
- Laravel 瀏覽器跨域Laravel瀏覽器跨域
- 谷歌瀏覽器跨域谷歌瀏覽器跨域
- 檢視瀏覽器請求的session 瀏覽器怎麼檢視session瀏覽器Session
- JavaScript 使用者代理檢測(瀏覽器型別檢測,執行平臺檢測等) 規範程式碼JavaScript瀏覽器型別
- 檢測當前瀏覽器是否支援cookie瀏覽器Cookie
- JavaScript 偵測手機瀏覽器的五種方法JavaScript瀏覽器
- 徹底理解瀏覽器的跨域瀏覽器跨域
- 如何在瀏覽器中測試JavaScript程式碼?瀏覽器JavaScript
- 谷歌瀏覽器禁用JavaScript谷歌瀏覽器JavaScript
- JavaScript瀏覽器事件物件JavaScript瀏覽器事件物件
- 瀏覽器檢視Session瀏覽器Session
- 【JavaScript】通過封裝自己的JSONP解決瀏覽器的跨域問題(Ajax跨域)JavaScript封裝JSON瀏覽器跨域
- Mac下chrome瀏覽器跨域MacChrome瀏覽器跨域
- 瀏覽器跨標籤通訊瀏覽器
- XnViewMP for Mac(跨平臺媒體瀏覽檢視和轉換器)ViewMac
- 幾款瀏覽器相容性測試工具瀏覽器
- Playwright安裝與Python整合:探索跨瀏覽器測試的奇妙世界Python瀏覽器
- 詳解瀏覽器跨域的幾種方法瀏覽器跨域
- 怎麼檢測瀏覽器是否支援HTML5特性?瀏覽器HTML
- javascript事件迴圈(瀏覽器/node)JavaScript事件瀏覽器
- JavaScript 複習之瀏覽器模型JavaScript瀏覽器模型
- 翻譯 | 擺脫瀏覽器限制的JavaScript瀏覽器JavaScript
- 瀏覽器 Javascript 的 EventLoop 動態圖析瀏覽器JavaScriptOOP
- web效能檢測工具lighthouseWeb
- 啟動google 瀏覽器允許跨域Go瀏覽器跨域
- 新版 google 谷歌瀏覽器跨域問題Go谷歌瀏覽器跨域
- 如何使用css實現跨瀏覽器的最小高度?CSS瀏覽器
- 超好用的瀏覽器相容性測試工具,趕緊收藏!瀏覽器