拦截浏览器缓慢的脚本消息

时间:2010-11-18 10:07:37

标签: javascript jquery browser client-side

可以截取浏览器消息,例如:

火狐:

  

此页面上的脚本可能很忙,或者   它可能已经停止响应。您   现在可以停止脚本,打开   调试器中的脚本,或者让   脚本继续。

  

此页面上的脚本导致您的   网络浏览器运行缓慢。如果它   继续运行,你的电脑可能会   变得反应迟钝。

由于页面有很多javascript / jquery活动,这些消息正在发生。

我认为这些消息首先出现的事实表明存在更广泛的问题,但是有没有办法在客户端处理这个消息/情况,以便能够显示更加用户友好的消息?

2 个答案:

答案 0 :(得分:6)

没有办法做到这一点,想象一个恶意用户编写一个脚本会降低浏览器的速度,直到完全无法使用,现在“慢速脚本”警告可能会被拯救,但如果他能拦截它并阻止它它被展示了吗?

你需要找到潜在问题的解决方案,也就是说,如果你正在做大量的计算(我想你做了),你需要把它们分成块,把它们放进去一个队列并以异步方式(如果可能)或按顺序处理它们,但两者之间的暂停时间很短。

在伪代码中,它可能如下所示:

var queue = []; // put your functions or the data in here
function() processQueue{
    if (queue.length > 0) {
        var item = queue.shift() // pop of the first item of the queue
        item(); // call the function, or in case of data pass it to th processing function
        setTimeout(processQueue, 100); // wait 100 ms before processing the next chunck
    }
}

setTimeout(processQueue, 0);

答案 1 :(得分:1)

不,没有办法拦截这些消息,它们是在引擎的较低级别保护用户。而是看看花了这么长时间,尽可能地优化......可能会将你的工作分解成在处理方面存在差距的块,这样你就不会触发消息。