我有一個用例,我需要獲取加載網頁時執行的Javascript行的總數。頁面加載過程中執行的Javascript行數
我面臨的問題是,當一定數量的JS執行超過(500萬我認爲在IE的情況下),並且頁面被絞死時,瀏覽器會發出警報。
我使用IE開發工具欄中提供的分析器,但它給了我調用的JS函數的總數,但不是執行的總數/行數。
任何幫助表示讚賞。
感謝
我有一個用例,我需要獲取加載網頁時執行的Javascript行的總數。頁面加載過程中執行的Javascript行數
我面臨的問題是,當一定數量的JS執行超過(500萬我認爲在IE的情況下),並且頁面被絞死時,瀏覽器會發出警報。
我使用IE開發工具欄中提供的分析器,但它給了我調用的JS函數的總數,但不是執行的總數/行數。
任何幫助表示讚賞。
感謝
在BASH:
wc -l file.js
在PHP:
<?php
$c=0;
$file_handle = fopen("file.js", "r");
while (!feof($file_handle)) {
$line = fgets($file_handle);
$c++;
}
fclose($file_handle);
print "$c lines.\n";
?>
在Node.js的:
var i, count = 0, js=require('fs').createReadStream('file.js');
js.on('data', function(chunk) {
for (i=0; i < chunk.length; ++i)
if (chunk[i] == 10) count++;
});
js.on('end', function() {
console.log(count);
});
嘗試minification讓你的線路數量下降。
雖然這看起來好像很糟糕的代碼。
這可能會幫助:
http://www-archive.mozilla.org/performance/jsprofiler.html
第一行指定從中次聚集在js文件。 低於每行的格式爲:[A,B] 13 C {DE} F到{G,H,I}
d - >在JS文件
E中的功能的基礎行號 - > JS文件中功能的範圍(最後)行號
首先,你應該重新設計你的代碼; 500萬條語句無需將控制權交還給瀏覽器,這無疑代表了很多代碼,想象一下移動瀏覽器如何與之抗爭。
找出執行多少個語句的一種方法是通過檢查代碼,爲代碼中的每個語句添加一條語句來計算它被執行的次數,從而有效地將代碼中的語句數加倍。
還有一些代碼覆蓋工具可以在瀏覽器內部運行,而無需根本檢測代碼;使用「javascript代碼覆蓋率」搜索可以獲得大量您可以使用的瀏覽器擴展,例如hrtimer。
只需將它分成更小的塊並在超時後調用 - 即可解決IE問題。例如
somethingBig();
somethingElseBig();
,而不是寫:
somethingBig();
setTimeout(somethingElseBig);
我高度懷疑,這是基於代碼行。當JS引擎花費太多時間而不將控制權交還給瀏覽器時,它很可能會觸發。 – ThiefMaster
'while(true);'也會導致頁面掛起...得到我在說什麼? – Matt
@ThiefMaster:我會想到同樣的事情,但有趣的是,它看起來是OP實際上是正確的:http://blogs.msdn.com/b/jpsanders/archive/2008/09/23/a-script-on -this-page-is-cause-internet-explorer-to-run-slowly-if-it-continue-to-run-your-computer-may-become-unresponsive.aspx – mellamokb