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

Dan*_*Dan 4 javascript browser jquery client-side

是否可以拦截浏览器消息,例如:

火狐:

此页面上的脚本可能正忙,或者可能已停止响应.您可以立即停止脚本,在调试器中打开脚本,或让脚本继续.

IE

此页面上的脚本导致Web浏览器运行缓慢.如果它继续运行,您的计算机可能会无响应.

由于页面具有大量javascript/jquery活动,因此发生这些消息.

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

Ivo*_*zel 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);
Run Code Online (Sandbox Code Playgroud)