javascript-淘汰赛在IE中导致“脚本运行缓慢”警告
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-淘汰赛在IE中导致“脚本运行缓慢”警告,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3155字,纯文字阅读大概需要5分钟。
内容图文
![javascript-淘汰赛在IE中导致“脚本运行缓慢”警告](/upload/InfoBanner/zyjiaocheng/675/d8e4092b9bd1465499e3a203c793b8f5.jpg)
我有一个可观察的和可计算的可观察的网格.第一行包含用作下面所有行中值的乘数的百分比率.用户可以编辑百分比率值,而淘汰赛将处理所有级联更新.我还需要一个单独的文本框,用户可以在其中输入一个新的百分比率,该百分比率将应用于网格中的每个百分比率.
初始绑定可以正常工作,而更新1%的比率也可以.
当用户在文本框中输入一个值并且我在视图模型中循环浏览以更新每个百分比率以进行匹配时,就会发生javascript警告.网格列实际上是每月值,因此更新百分比率的循环仅执行12次.
我尝试了节气门延长器,但没有解决问题.有任何想法吗?
更新:不确定是否会有所帮助,但是我添加了一些代码
$("#NewRate").change(function (e) {
var newRate = parseFloat($(this).val());
for (var i = 0; i < 12; i++) {
viewModel.resourceCategory.monthAmounts[i].amount(newRate);
}
});
function ConvertToDate(jsonDateString) {
var re = /-?\d+/;
var m = re.exec(jsonDateString);
return new Date(parseInt(m[0]));
}
function MonthAmount(amount, dateKey) {
var self = this;
self.amount = ko.observable(amount).extend({ throttle: 1 }); //using the throttle to avoid "long running script" warning in IE
self.dateKey = ConvertToDate(dateKey);
self.monthIndex = self.dateKey.getMonth();
}
function ResourceCategory(name, monthAmounts) {
var self = this;
self.name = name;
self.monthAmounts = ko.utils.arrayMap(monthAmounts, function (monthAmount) {
return new MonthAmount(monthAmount.Amount, monthAmount.DateKey);
});
self.totalAmount = ko.computed(function () {
var sum = 0;
for (var i = 0; i < self.monthAmounts.length; i++) {
sum += parseFloat(self.monthAmounts[i].amount());
}
return sum.toFixed(2);
}).extend({ throttle: 1 }); //using the throttle to avoid "long running script" warning in IE
self.averageAmount = ko.computed(function () {
return (self.totalAmount() / self.monthAmounts.length).toFixed(2);
}).extend({ throttle: 1 }); //using the throttle to avoid "long running script" warning in IE
}
function ResourceCategoriesMonthTotal(monthIndex, resourceCategories) {
var self = this;
self.monthIndex = monthIndex;
self.dateKey = new Date(new Date().getFullYear(), monthIndex, 1);
self.amount = ko.computed(function () {
var val = 0;
for (var i = 0; i < resourceCategories.length; i++) {
val += parseFloat(resourceCategories[i].monthAmounts[self.monthIndex].amount());
}
return (val).toFixed(2);
}).extend({ throttle: 1 }); //using the throttle to avoid "long running script" warning in IE
}
self.resourceCategoriesMonthTotals = new Array();
for (var monthIndex = 0; monthIndex < 12; monthIndex++) {
self.resourceCategoriesMonthTotals.push(new ResourceCategoriesMonthTotal(monthIndex, self.resourceCategories));
}
self.resourceCategoriesTotal = ko.computed(function () {
var val = 0;
for (var i = 0; i < self.resourceCategoriesMonthTotals.length; i++) {
val += parseFloat(self.resourceCategoriesMonthTotals[i].amount());
}
return (val / self.resourceCategoriesMonthTotals.length).toFixed(2);
}).extend({ throttle: 1 }); //using the throttle to avoid "long running script" warning in IE
解决方法:
听起来问题是当你
loop through the view model updating each of the percentage rates to match
如果是这样,则IE的一个答案是通过使用timeout(0)调用使浏览器屈服.当您的JS在超时后恢复时,请执行循环的下一次迭代,然后再执行一次超时.
完成此操作后,只有在嗅探到它是IE浏览器时才执行超时.否则,不需要.
内容总结
以上是互联网集市为您收集整理的javascript-淘汰赛在IE中导致“脚本运行缓慢”警告全部内容,希望文章能够帮你解决javascript-淘汰赛在IE中导致“脚本运行缓慢”警告所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。