首页 > 解决方案 > Javascript 阻止或减慢浏览器的速度。如何防止警报或加速脚本

问题描述

我有一个需要在 excel 中导出很多行的数据表。在我的示例中,我只使用了 500 行,但在真实环境中我有 > 2000 行。

更新:添加 blockui 以提醒用户:https ://jsfiddle.net/j2fug3ax/

现在,当使用 excel 中的按钮导出行时,有一个脚本可以读取每一行以操作数据并将其设置为与 excel 兼容(格式、对齐方式、单元格高度、换行符......)

这里是编辑行的代码:

           //need to change double quotes to single
           data = data.replace( /"/g, "'" );

           // replace &
           data = data.replace( /&/g, "&" );

           // replace p with br
           data = data.replace(/<p[^>]*>/g, '').replace(/<\/p>/g, '<br>');

           // replace div with br
           data = data.replace(/<div[^>]*>/g, '').replace(/<\/div>/g, '<br>');

           data = remove_tags(data);



           //split at each new line
           splitData = data.split('<br>');

           //remove empty string
           splitData = splitData.filter(function(v){return v!==''});

           data = '';
           for (i=0; i < splitData.length; i++) {
                    //add escaped double quotes around each line
                    data += '\"' + splitData[i] + '\"';
                    //if its not the last line add CHAR(10)
                    if (i + 1 < splitData.length) {
                        data += ', CHAR(10), ';
                    }
           }

           //Add concat function
           data = 'CONCATENATE(' + data + ')';
           return data;

这段代码减慢了脚本的速度,并且浏览器上出现了 BLOCK 或 WAIT 的警报……这不是很优雅,那么,有没有办法防止这个警报或加速我的代码?

在我的示例中进行操作不是必需的,因为我设置了虚拟数据,但在真实环境中我需要它。

标签: javascriptdatatable

解决方案


所以只是一个建议:

为什么不在服务器端做呢?

在客户端处理大量数据是一个糟糕的选择。您始终依赖于客户端系统的资源容量。Javascript as-不是计算密集型操作或数据处理的好选择。

解决方案

通过 API 将您的页面大小和页码发送到服务器。查询您的表并在服务器端创建 excel/csv。返回生成的文件以响应您的 UI 以将其下载到客户端系统上。

我希望它有帮助:)


推荐阅读