如何防止浏览器中的“停止运行此脚本”?

丽塔

我有一个ASP.NET MVC页面,该页面具有包含14列的JQuery Editable Datatable。我有一个按钮(“不应用任何结果”)来执行客户端计算并应用于该表中的所有行。

当我们单击此按钮时,每4行应用一次计算后,它将显示此“停止运行脚本”消息。

我验证了设置。在“ Internet选项”的“高级”选项卡中,选中“禁用脚本调试(Internet Explorer)”选项。并且未选中“显示有关脚本错误的通知”。

我正在使用Internet Explorer8。我现在在IE9上不会发生。但这是服务器,我们无法升级到IE9。

我进行了研究,尝试了这两种选择,但没有任何效果。

示例(1): http : //www.codeproject.com/Tips/406739/Preventing-Stop-running-this-script-in-Browsers

示例(2): http : //www.picnet.com.au/blogs/guido/post/2010/03/04/how-to-prevent-stop-running-this-script-message-in-browsers/

任何人都有这个问题,任何建议都将受到高度赞赏。

这是引发脚本消息的实际代码:

for(i < iTotalRecords;i++) 
      {  

            var row = oTableAuditLines.fnGetData(i); 
            oTableAuditLines.fnUpdate("NF",i,1); 
            UndoHCPCS(row,i);
            UndoHCPCSModCodes(row,i);
            UndoLineUnitCount(row,i);
            oTableAuditLines.fnUpdate("", i, 6); //Reset Denial Reason Code
            UndoNonCoveredCharges(row,i);
            CalculateAmountPaidAtLine(row,i);
            CalculateEstimatedRecoveryAmountAtLine(row,i);
      }
      UpdateSummaryLine();
      UpdateSummaryLineReasonCode();

通过引用Example(2)中的示例代码,我更改了如下代码,但仍收到脚本消息:

//此功能是为了避免脚本运行消息

  RepeatingOperation = function(op, yieldEveryIteration) 
  {  
  var count = 0;  
  var instance = this;  
  this.step = function(args) 
  {    
  if (++count >= yieldEveryIteration) 
  {      
  count = 0;      
  setTimeout(function() { op(args); }, 1, [])      
  return;      
  }    
  op(args);  
  };
  };

  function ApplyNoFindings()
  {

    var i = 0;
    var ro = new RepeatingOperation(function() 
     {  

     var row = oTableAuditLines.fnGetData(i); 
            oTableAuditLines.fnUpdate("NF",i,1); 
            UndoHCPCS(row,i);
            UndoHCPCSModCodes(row,i);
            UndoLineUnitCount(row,i);
            oTableAuditLines.fnUpdate("", i, 6); //Reset Denial Reason Code
            UndoNonCoveredCharges(row,i);
            CalculateAmountPaidAtLine(row,i);
            CalculateEstimatedRecoveryAmountAtLine(row,i);

     if (++i < iTotalRecords) 
     { 
        ro.step(); 
     }  
     else 
     { 
        UpdateSummaryLine();
        UpdateSummaryLineReasonCode();
     }  
     }, 100);
     ro.step();

}

我在这里做错了什么?

土清

问题是javascript是单线程的,因此如果有一个函数需要很长时间才能完成,则此函数可能会导致UI无法响应。因此,浏览器将通过显示消息“停止运行此脚本”来警告用户有关长时间运行的脚本该问题的解决方案是:

  • 优化您的代码,因此该功能不会花费太长时间。
  • 用于setTimeout将函数执行分成足​​够短的许多部分。

示例代码模式:

var array = []; //assume that this is a very big array
var divideInto = 4;
var chunkSize = rowCount/divideInto;
var iteration = 0;

setTimeout(function doStuff(){
  var base = chunkSize * iteration;
  var To = Math.min(base+chunkSize,array.length);
  while (base < To ){
      //process array[base]
      base++;
  }
  iteration++;
  if (iteration < divideInto)
      setTimeout(doStuff,0); //schedule for next phase
},0);

您在Example(2)中采用的解决方案是正确的,但是您的代码中有问题。那是setTimeout不运行尝试像这样更改代码:

RepeatingOperation = function(op, yieldEveryIteration) 
  {  
  var count = 0;  
  var instance = this;  
  this.step = function(args) 
    {    
       op(args); 
       if (++count <= yieldEveryIteration) 
       {          
         setTimeout(function() { instance.step(args); }, 1, [])         
       }    
    };   
  };

修改您的function ApplyNoFindings(),请尝试以下操作:

if (++i > iTotalRecords) 
 { 
    UpdateSummaryLine();
    UpdateSummaryLineReasonCode();
 }  

代替:

if (++i < iTotalRecords) 
     { 
        ro.step(); 
     }  
     else 
     { 
        UpdateSummaryLine();
        UpdateSummaryLineReasonCode();
     }  

注意:未经测试,只是告诉您它应该如何工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何防止浏览器存储密码

来自分类Dev

从浏览器启动/停止在后台运行的php脚本

来自分类Dev

如何停止浏览器窗口跳舞

来自分类Dev

如何在使用移动浏览器浏览器时防止从缓存中重新加载网页?

来自分类Dev

如何在谷歌浏览器中运行自己的JavaScript

来自分类Dev

如何从浏览器访问在docker容器中运行的tomcat?

来自分类Dev

您如何在浏览器中运行Jasmine测试?

来自分类Dev

关闭浏览器后,Google应用脚本停止运行

来自分类Dev

如何在浏览器中运行.jar?

来自分类Dev

如何检测脚本是否正在浏览器或Node.js中运行?

来自分类Dev

在构建浏览器中停止构建时如何执行PowerShell脚本

来自分类Dev

运行脚本时,如何防止slimerjs浏览器打开?

来自分类Dev

如何从浏览器中的变量运行全局常量函数

来自分类Dev

如何在Google Chrome浏览器中运行Postman

来自分类Dev

浏览器由于脚本长时间运行而变得无响应-如何找到负责的脚本?

来自分类Dev

如何防止浏览器中的“停止运行此脚本”?

来自分类Dev

如何在heroku上运行此python脚本?(浏览器抛出“ 404 Not Found”)。

来自分类Dev

脚本运行时如何在浏览器中输出内容?

来自分类Dev

如何在Chrome浏览器中运行硒测试?

来自分类Dev

如何从Android的浏览器运行php脚本?

来自分类Dev

在PHP中,即使浏览器退出后,如何确保脚本将继续运行直到完成?

来自分类Dev

关闭浏览器后,Google应用脚本停止运行

来自分类Dev

如何直接从Geany在浏览器中运行PHP代码?

来自分类Dev

java如何在浏览器中运行其applet?

来自分类Dev

运行脚本时如何防止slimerjs浏览器打开?

来自分类Dev

如何使用脚本在浏览器中自动启动 jenkins

来自分类Dev

如何使用插件在 Chrome 浏览器中运行 apk?

来自分类Dev

脚本正确但无法在浏览器中运行

来自分类Dev

如何防止从浏览器中暴露 Notes 视图

Related 相关文章

  1. 1

    如何防止浏览器存储密码

  2. 2

    从浏览器启动/停止在后台运行的php脚本

  3. 3

    如何停止浏览器窗口跳舞

  4. 4

    如何在使用移动浏览器浏览器时防止从缓存中重新加载网页?

  5. 5

    如何在谷歌浏览器中运行自己的JavaScript

  6. 6

    如何从浏览器访问在docker容器中运行的tomcat?

  7. 7

    您如何在浏览器中运行Jasmine测试?

  8. 8

    关闭浏览器后,Google应用脚本停止运行

  9. 9

    如何在浏览器中运行.jar?

  10. 10

    如何检测脚本是否正在浏览器或Node.js中运行?

  11. 11

    在构建浏览器中停止构建时如何执行PowerShell脚本

  12. 12

    运行脚本时,如何防止slimerjs浏览器打开?

  13. 13

    如何从浏览器中的变量运行全局常量函数

  14. 14

    如何在Google Chrome浏览器中运行Postman

  15. 15

    浏览器由于脚本长时间运行而变得无响应-如何找到负责的脚本?

  16. 16

    如何防止浏览器中的“停止运行此脚本”?

  17. 17

    如何在heroku上运行此python脚本?(浏览器抛出“ 404 Not Found”)。

  18. 18

    脚本运行时如何在浏览器中输出内容?

  19. 19

    如何在Chrome浏览器中运行硒测试?

  20. 20

    如何从Android的浏览器运行php脚本?

  21. 21

    在PHP中,即使浏览器退出后,如何确保脚本将继续运行直到完成?

  22. 22

    关闭浏览器后,Google应用脚本停止运行

  23. 23

    如何直接从Geany在浏览器中运行PHP代码?

  24. 24

    java如何在浏览器中运行其applet?

  25. 25

    运行脚本时如何防止slimerjs浏览器打开?

  26. 26

    如何使用脚本在浏览器中自动启动 jenkins

  27. 27

    如何使用插件在 Chrome 浏览器中运行 apk?

  28. 28

    脚本正确但无法在浏览器中运行

  29. 29

    如何防止从浏览器中暴露 Notes 视图

热门标签

归档