javascript – 如何处理“此页面上的脚本导致Internet Explorer运行缓慢”警报?

javascript我称之为web方法.使用IE浏览器,如果我将一个巨大的参数传递给该Web方法,则会弹出警告“停止运行此sciprt?此页面上的脚本导致Internet Explorer运行缓慢”.

是否可以处理单击“是”按钮,以便如果用户决定取消脚本执行,我可以运行一些替代脚本(在这种情况下,我的“替代”脚本包括关闭一些进度条,我弹出只是在运行长时间脚本之前).

我看过许多帖子,解释了如何防止显示此警报,但我不想停止显示警报:我只是希望能够处理用户决定停止脚本执行的情况.

解决方法

我之前在一个内部应用上处理过这个问题,他们不关心浏览器需要多长时间来处理数字,他们只是不想点击提示.

关键是将工作分解为相对可预测的工作块(可在cpu时间方面预测)并在setInterval上运行它们,如:

function doWork(begin,end) {
    // Some chunk of what your worker function normally does from begin to end

    if (actualEnd < end) // nothing left to do
        clearInterval(Interval);
}

var Interval = setInterval(doWork,15);

这可以防止出现IE提示(或Chrome显示“冻结”对话框).下一步是添加一些代码,让用户完全跳过它;如果一开始就知道工作量,请立即询问.如果没有,开始处理,然后在n个块之后询问他们是否愿意做更便宜的功能.

完成这么多工作还有2个其他选项:

>展望未来需要完成多少工作,如果有很多工作,请将其传递给服务器(不幸的是,这意味着再次在服务器上编写JS;当然,您可以使用运行Javascript的服务器引擎保存自己一些编码).
>使用Google Gears / HTML5中的后台工作人员

最后,如果您按需进行这么多工作,那么您正在执行的工作可能会有加速机会 – 数据可以预先在服务器上编制索引,以使计算更快/更简单,就像这样.但我不知道你在计算什么.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...