Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
页面加载期间执行的Javascript行数_Javascript_Internet Explorer_Profiler - Fatal编程技术网

页面加载期间执行的Javascript行数

页面加载期间执行的Javascript行数,javascript,internet-explorer,profiler,Javascript,Internet Explorer,Profiler,我有一个用例,需要获取加载网页时执行的Javascript行的总数 我面临的问题是,当某个JS执行次数超过(我认为IE是500万次)并且页面被挂起时,浏览器会发出警报 我使用了IE开发者工具栏中提供的探查器,但它给出了调用的JS函数的总数,而不是执行的总行数 感谢您的帮助 感谢BASH中的: wc -l file.js 在PHP中: <?php $c=0; $file_handle = fopen("file.js", "r"); while (!feof($file_handle))

我有一个用例,需要获取加载网页时执行的Javascript行的总数

我面临的问题是,当某个JS执行次数超过(我认为IE是500万次)并且页面被挂起时,浏览器会发出警报

我使用了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);
});
var i,count=0,js=require('fs')。createReadStream('file.js'); js.on('data',函数(块){ 对于(i=0;i 尽量把你的电话号码记下来

不过,这似乎是一大堆可怕的代码。

这可能会有所帮助:

第一行指定从中收集时间的js文件。 下面每一行的格式为:[A,B]C{D-E}F{G,H,I}

D->JS文件中函数的基线编号

E->JS文件中函数的区段(最后)行号首先,你应该重新设计你的代码;不将控制权交还给浏览器的500万条语句绝对是一大堆代码,想象一下移动浏览器将如何应对它

确定执行了多少条语句的一种方法是插入代码,为代码中的每条语句添加一条语句,以计算执行的次数,从而有效地将代码中的语句数量加倍


还有一些代码覆盖工具可以在浏览器中运行,而无需插入代码;谷歌搜索“javascript代码覆盖率”提供了大量可供使用的浏览器扩展,例如。

只需将其分割成较小的块,并在超时后调用即可解决IE问题。e、 g

somethingBig();
somethingElseBig();
改为写:

somethingBig();
setTimeout(somethingElseBig);

我非常怀疑这是基于代码行的。当JS引擎花费太多时间而没有将控制权传递回浏览器时,它很可能会触发。
while(true)也会导致页面挂起。。。明白我的意思吗?@ThiefMaster:我也会这么想,但有趣的是,OP似乎是正确的:我能够在我的机器上解决这个问题,通过编辑注册表使行数从500万变为有限,但这对每个使用我的网页的人来说都是不可能的。有没有任何工具可以告诉我行数?你在这里犯了严重的错误。那不行。IE计算执行的语句(而不是代码行),因此循环中的语句在每次迭代中都会被计算,等等。这在他对问题的评论中的mellamokb中有说明。是的,我回答了他们最初的问题,但正确的答案是“重写代码,代码太多了。”