我遇到了与#34相关的问题;停止运行此脚本此页面上的脚本导致您的网络浏览器运行缓慢"使用IE 8.我正在尝试做的是从数据库逻辑加载大量行并将其绑定到客户端的jqgrid。
客户端代码 -
$(document).ready(function () {
var model = @Html.Raw( POSWebManager.MvcApplication.Serializer.Serialize( Model ) );
var boolRenderer = function( row, column, value ) {
var html = "<div style='overflow: hidden; text-overflow: ellipsis; text-align: left; padding:4px 4px 2px 2px;";
if( value === true ) {
if( column == "Exported" ) {
html += "font-weight:bold;background-color:#99FF66;";
} else if( column == "HasErrors" ) {
html += "font-weight:bold;background-color:#FF9999;";
}
}
html += "'>";
if( value === true ) {
html += "Yes";
} else {
html += "No";
}
html += "</div>";
return html;
};
var columns = [
{ name: "ID", text: 'ID', datafield: 'ID', width: 55 },
{ name: "TransactionItemID", text: 'Trans Item ID', datafield: 'TransactionItemID' },
{ name: "Exported", text: 'Exported', datafield: 'Exported', cellsrenderer: boolRenderer },
{ name: "HasErrors", text: 'Has Errors', datafield: "HasErrors", cellsrenderer: boolRenderer },
{ name: "FirstName", text: 'First Name', datafield: 'FirstName', width: 110, type: "string" },
{ name: "LastName", text: 'Last Name', datafield: 'LastName', width: 110, type: "string" },
{ name: "DOB", text: 'DOB', datafield: 'DOB', width: 90, type: "string" },
{ name: "IDNumber", text: 'ID Number', datafield: 'IDNumber', width: 110, type: "string" },
{ name: "StreetAddress", text: 'Street Address', datafield: 'StreetAddress', width: 150, type: "string" },
{ name: "City", text: 'City', datafield: 'City', width: 130, type: "string" },
{ name: "State", text: 'State', datafield: 'State', width: 70, type: "string" },
{ name: "Post", text: 'Post', datafield: 'PostalCode', width: 70, type: "string" },
{ name: "Email", text: 'Email', datafield: 'Email', width: 150, type: "string" },
{ name: "Created", text: 'Created', datafield: 'Created', width: 90, type: "string" },
{ name: "Updated", text: 'Updated', datafield: 'Updated', width: 90, type: "string" },
{ name: "ABN", text: 'ABN Number', datafield: 'ABN', width: 100, type: "string" },
{ name: "CompanyName", text: 'Company Name', datafield: 'CompanyName', width: 100, type: "string" }
];
var adapter= new $.jqx.dataAdapter( { localdata: model, datatype: "json", datafields: columns } );
$("#jqxgrid").jqxGrid( {
width: 960,
source:adapter,
theme: getDemoTheme(),
pageable: true,
autoheight: true,
sortable: true,
altrows: true,
enabletooltips: true,
showfilterrow: true,
filterable: true,
columnsresize: true,
selectable: true,
pagesize: 25,
pagesizeoptions: ['25', '50', '100', '1000'],
selectionmode: 'multiplerowsextended',
columns: columns
} );
} );
任何人都可以告诉我如何禁用此通知
不使用注册表或使用ActiveX。 我是jqgrid和jquery的新手,所以请帮我解决这个问题。
谢谢
答案 0 :(得分:0)
您无法禁用长时间运行或无响应的脚本通知。您可以通过更改代码来解决此问题。
对于长时间运行的过程,通常的解决方法是将工作分解为足够短的块,以便它们不会触发警告,然后处理一大块工作,执行setTimeout(fn, 1)
来处理下一个块,依此类推,直到完成所有块。这需要保留一些简单的状态变量来指导每个块。
setTimeout()
允许浏览器处理任何其他待处理事件并阻止长时间运行的脚本消息。
在this answer: Best way to iterate over an array without blocking the UI中,您将看到一个代码示例,说明如何处理像这样的块中的工作。在答案中甚至还有一个有效的jsFiddle来说明这个概念。
在您的特定情况下,您可以为columns数组中的索引创建状态变量,然后在每个工作块中仅处理几列,适当地递增索引,并在setTimeout()
触发时,处理接下来的几列等等。