Javascript代码在Chrome中加载时间小于2秒,在Firefox中加载时间小于4秒,但在IE 11中加载时间为20秒

Javascript代码在Chrome中加载时间小于2秒,在Firefox中加载时间小于4秒,但在IE 11中加载时间为20秒,javascript,jquery,html,internet-explorer,Javascript,Jquery,Html,Internet Explorer,Internet Explorer中的加载速度非常慢,而Microsoft Edge中的加载速度稍慢 基本上,页面在执行js代码时会冻结20秒。该代码引入一个5mb xml文件,并将内容显示为表中的tr。这带来了成千上万的工作岗位 它在Chrome上运行良好,几乎是即时的,但是微软浏览器的运行速度非常慢 有什么想法吗 代码很长,所以这里是js fiddle- $.urlParam=函数(名称){ var results=newregexp('[\?&]'+name+'=([^&\]*)).exe

Internet Explorer中的加载速度非常慢,而Microsoft Edge中的加载速度稍慢

基本上,页面在执行js代码时会冻结20秒。该代码引入一个5mb xml文件,并将内容显示为表中的tr。这带来了成千上万的工作岗位

它在Chrome上运行良好,几乎是即时的,但是微软浏览器的运行速度非常慢

有什么想法吗

代码很长,所以这里是js fiddle-

$.urlParam=函数(名称){
var results=newregexp('[\?&]'+name+'=([^&\]*)).exec(window.location.href);
如果(结果==null){
返回null;
}
否则{
返回结果[1]| | 0;
}
}   
$.fn.extend({
xml_解析器:函数(el){
//构造和显示预加载程序
$('').html('设置作业列表…).prependTo($('body');
el.hide();
var e=el;
//获取XML数据
$.ajax({
键入:“GET”,
url:“externalxmlfile”,
数据类型:“xml”,
成功:功能(数据){
//删除预加载HTML并显示数据
$(“#预加载xml”).remove();
el.show();
变量条目=$(数据).find('job'),
xmlArr=[],
xmlArrCity=[];
var xml\u zip\u数组=
条目。每个(函数(){
//来自XML节点的属性
var xml_headline=$(this).find('headline').text(),
xml_city=$(this).find('city').text(),
xml_application=$(this).find('application').text(),
xml_bodycopy=$(this).find('bodycopy').text(),
xml_zip=$(this).find('zip').text(),
xml_benefits=$(this).find('benefits').text(),
xml_qualifications=$(this).find('qualifications').text(),
xml_state=$(this).find('state').text(),
xml_subhead=$(this).find('subhead').text();
var xml_drivertype=$(this).find('drivertypeID').text();
开关(xml_驱动器类型){
案例“19”:
xml_drivertype=“租赁购买”;
打破
案例“20”:
xml_drivertype=“公司驾驶员团队”;
打破
案例“21”:
xml_drivertype=“学生”;
打破
案例“63”:
xml_drivertype=“专用驱动程序”;
打破
案例“64”:
xml_drivertype=“OTR”;
打破
案例“65”:
xml_drivertype=“区域驱动程序”;
打破
案例“66”:
xml_drivertype=“所有者操作员”;
打破
违约:
xml_drivertype=“未定义的ID”;
};
push(xml_city);
//将匹配项添加到数组中
xmlArr+='';
xmlArr+=''+xml_headline+'';
xmlArr+=''+xml_驱动类型+'';
xmlArr+=''+xml_城市+'';
xmlArr+=''+xml_状态+'';
xmlArr+='+X'+xml_headline+''+xml_subhead+''+xml_bodycopy+'优点:
'+xml_优点+'资格:
'+xml_资格+''; xmlArr+=''+xml_-zip+''; xmlArr+=''; });//结束每个循环 $(xmlArr).appendTo(el.find('table>tbody'); //将排序和斑马线添加到表中 setTimeout(function(){el.find('table').tablesorter({sortList:[[0,0],[0,0]],widgets:['zebra']});},120); el.find('table').hide().slideDown('200'); //过滤结果功能 var nav_link=$('xml_nav li a'); 导航链接。单击(函数(){ var tr=el.find('tbody>tr'), attr_class=$(this.attr('class'); tr.show();//显示所有行 tr.removeClass(“条纹”); $('table>tbody>tr:visible:odd')。addClass('stripe'); }); var zipFinal; zipFinal2变种; var columnFilters=[{},{},{},{},{},{},{}];//添加尽可能多的列 var zipColumnNo=6; var=3; var cityColumnNo=2; var driverColumnNo=1; var cityLength=0; //切换第一列筛选器: var-fresh=0; 函数applyFilter(过滤器){ $('tr')。每个(函数(){ $(this).toggle(//当没有TD有不匹配的内容时显示 !$(this).find('td').filter(函数(idx){ //当内容与此列上的筛选器不匹配时返回true 返回筛选器[idx]&&Object.keys(筛选器[idx]).length&& !filter[idx].hasOwnProperty($(this).text())和&!filter[cityColumnNo].hasOwnProperty($(this).text().toString().substring(0,cityL
$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    if (results==null){
       return null;
    }
    else{
       return results[1] || 0;
    }
}   

    $.fn.extend({ 
       xml_parser : function(el) {

        //Construct and display preloader
         $('<div id="preload_xml" />').html('<img src="/wp-content/themes/Divi-Child/images/ajax-loader.gif" alt="loading data" /><h3>Setting up the Job List...</h3>').prependTo($('body'));

            el.hide();
            var e = el;

            //Get XML Data
            $.ajax({
                type: 'GET',
                url: 'externalxmlfile',
                dataType: 'xml',
                success: function(data) {

                  //Remove preloader HTML & show data
                  $('#preload_xml').remove();
                  el.show();
                var entries     = $(data).find('job'),
                    xmlArr      = [],
                    xmlArrCity   = [];

                    var xml_zip_array = 
                    entries.each(function() {

                        //Atrributes from XML nodes
                        var xml_headline = $(this).find('headline').text(),
                            xml_city = $(this).find('city').text(),
                            xml_application = $(this).find('application').text(),
                            xml_bodycopy = $(this).find('bodycopy').text(),
                            xml_zip = $(this).find('zip').text(),
                            xml_benefits = $(this).find('benefits').text(),
                            xml_qualifications = $(this).find('qualifications').text(),
                            xml_state = $(this).find('state').text(),
                            xml_subhead = $(this).find('subhead').text();
                        var xml_drivertype = $(this).find('drivertypeID').text();
                        switch(xml_drivertype){
                                case "19":
                                    xml_drivertype = "Lease Purchase";
                                    break;
                                case "20":
                                    xml_drivertype = "Company Driver Team";
                                    break;
                                case "21":
                                    xml_drivertype = "Student";
                                    break;
                                case "63":
                                    xml_drivertype = "Dedicated Driver";
                                    break;
                                case "64":
                                    xml_drivertype = "OTR";
                                    break;
                                case "65":
                                    xml_drivertype = "Regional Drivers";
                                    break;
                                case "66":
                                    xml_drivertype = "Owner Operator";
                                    break;
                                default:
                                    xml_drivertype = "Undefined ID";
                        };
                      xmlArrCity.push(xml_city);
                      // Add matched items to an array
                      xmlArr += '<tr data-filtercriteria="'+ xml_drivertype +'">';

                        xmlArr += '<td class="clickableTd">'+ xml_headline +'</td>';
                        xmlArr += '<td class="clickableTd">'+ xml_drivertype +'</td>';
                        xmlArr += '<td class="clickableTd">'+ xml_city +'</td>';
                        xmlArr += '<td class="clickableTd stateTd">'+ xml_state +'</td>';
                        xmlArr += '<td class="popupButton">+</td><td class="popup"><div class="popupContainer"><div class="popupExit">X</div><div class="headline">'+ xml_headline +'</div><div class="popupBodyContainer"><div class="subhead">'+ xml_subhead +'</div><div class="bodycopy">'+ xml_bodycopy +'</div><div class="benefits">Benefits:</br>'+ xml_benefits +'</div><div class="qualifications">Qualifications:</br>'+ xml_qualifications +'</div><div class="application"><a href="'+ xml_application +'" target="_blank">Apply now</a></div></div></div></td>';
                   xmlArr += '<td class="zipTd">'+ xml_zip +'</td>';
                      xmlArr += '</tr>';

                    }); // end each loop

                      $(xmlArr).appendTo(el.find('table > tbody'));


                      //Add sort and zebra stripe to table
                       window.setTimeout(function(){ el.find('table').tablesorter({sortList:[[0,0],[0,0]], widgets: ['zebra']});}, 120);
                      el.find('table').hide().slideDown('200');

                      //Filter results functionality
                     var nav_link = $('#xml_nav li a');

                     nav_link.click( function() {

                        var tr         = el.find('tbody > tr'),
                            attr_class = $(this).attr('class');
                        tr.show(); //Show all rows


                            tr.removeClass('stripe');   
                            $('table > tbody > tr:visible:odd').addClass('stripe');
                      });

            var zipFinal;
            var zipFinal2;

var columnFilters = [{}, {}, {}, {}, {}, {}, {}]; // add as many as you have columns
var zipColumnNo = 6;
var stateColumnNo = 3;
var cityColumnNo = 2;
var driverColumnNo = 1;
var cityLength = 0;
                            // toggle first-column filter:
var fresh = 0;
                function applyFilter(filter) {

                    $('tr').each(function() {
                        $(this).toggle( // show when no TD has mismatching content
                        !$(this).find('td').filter(function(idx) {
                        // return true when content does not match the filter on this column
                        return filter[idx] && Object.keys(filter[idx]).length &&
                                !filter[idx].hasOwnProperty($(this).text()) && !filter[cityColumnNo].hasOwnProperty($(this).text().toString().substring(0, cityLength).toLowerCase());                                  
                        }).length
                        );
                    });
};

        $('body').on('click', '#zipButton', function() {

        if($('#zipid2').val() == "") {
            $('tr').show();
            columnFilters[zipColumnNo] = {};
            applyFilter(columnFilters);

        if ($("tbody tr:visible").length === 0) {
      $(".resetFilter").addClass('resetFilterVisible')
      }
      else {
      $(".resetFilter").removeClass('resetFilterVisible')
      }
        }
        else {
                        var apiUrlZip = $('#zipid2').val();
                        var apiUrlMiles = $('#zipMiles').val();
                        var apiUrl = "http://api.truckingfeeds.com/ziplist.aspx?key=ced2929f-3621-496f-89aa-1f64fc721b06&zip="+apiUrlZip+"&miles="+apiUrlMiles;
                        $.ajax({
                            async: false,
                            url: apiUrl,
                            success: function(response){
                                zipFinal = response;
                                zipFinal2 = zipFinal.split(',').map(Number);

                        }});

    var newFilter = {};
        // turn zipFinal2[] into object with values as properties for faster lookup
        zipFinal2.forEach(function(zip) {
            newFilter[zip] = 1;
        });
    columnFilters[zipColumnNo] = newFilter;
    applyFilter(columnFilters);
    $("#xml_wrapper .tableContainer").css("display", "block");
        if ($("tbody tr:visible").length === 0) {
      $(".resetFilter").addClass('resetFilterVisible')
      }
      else {
      $(".resetFilter").removeClass('resetFilterVisible')
      }
      $('#statesUS').val("ALL").change();
      $('#jobCity').val("").change();
            }});


    $("#jobCity").on('keyup change', function() {
            if($(this).val() == "") {
            $('tr').show();
            columnFilters[cityColumnNo] = {};
            applyFilter(columnFilters);

        if ($("tbody tr:visible").length === 0) {
      $(".resetFilter").addClass('resetFilterVisible')
      }
      else {
      $(".resetFilter").removeClass('resetFilterVisible')
      }
        }
        else {
    columnFilters[cityColumnNo] = {}; // no filter
         cityLength = $(this).val().length;
         columnFilters[cityColumnNo][$(this).val().toLowerCase()] = 1;
    applyFilter(columnFilters);
    $("#xml_wrapper .tableContainer").css("display", "block");
        if ($("tbody tr:visible").length === 0) {
      $(".resetFilter").addClass('resetFilterVisible')
      }
      else {
      $(".resetFilter").removeClass('resetFilterVisible')
      }
      }
});
$('#driverTypes').change(function () {
    columnFilters[driverColumnNo] =  {}; // no filter
    if (this.selectedIndex) {
         // filter second column on text in selected option
         columnFilters[driverColumnNo][$(this.options[this.selectedIndex]).text()] = 1;
    }
    applyFilter(columnFilters);
    $("#xml_wrapper .tableContainer").css("display", "block");
        if ($("tbody tr:visible").length === 0) {
      $(".resetFilter").addClass('resetFilterVisible')
      }
      else {
      $(".resetFilter").removeClass('resetFilterVisible')
      }
});
$('#statesUS').change(function () {
    columnFilters[stateColumnNo] =  {}; // no filter
    if (this.selectedIndex) {
         // filter second column on text in selected option
         columnFilters[stateColumnNo][$(this.options[this.selectedIndex]).text()] = 1;
    }
    applyFilter(columnFilters);
    $("#xml_wrapper .tableContainer").css("display", "block");
        if ($("tbody tr:visible").length === 0) {
      $(".resetFilter").addClass('resetFilterVisible')
      }
      else {
      $(".resetFilter").removeClass('resetFilterVisible')
      }
});

$('body').on('click', '.resetFilterButton', function() {
$('#zipid2').val("").change();
$('#zipMiles').val($("#zipMiles option:first").val()).change();
$("#xml_wrapper .tableContainer").css("display", "none");
$('#jobCity').val("").change();
$('#driverTypes').val($("#driverTypes option:first").val()).change();
$('#statesUS').val($("#statesUS option:first").val()).change();
$('tr').show();
columnFilters[zipColumnNo] = {};
    applyFilter(columnFilters);
$(".resetFilter").removeClass('resetFilterVisible');
      });
$(xmlArr).appendTo(el.find('table > tbody'));