在使用OneThink的時候,它後臺的原生搜尋js程式碼在IE中會出現記憶體溢位的問題,也就是說在IE中無法使用搜尋功能。
問題的關鍵出現在這兩句程式碼上,它是用於篩選不為空的項。
原始碼
問題的關鍵出現在這兩句程式碼上,它是用於篩選不為空的項。
query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,''); query = query.replace(/^&/g,'');如果要讓它在IE上支援,必須要改造一下程式碼。
原始碼
/搜尋功能 $("#search").click(function(){ var url = $(this).attr('url'); var query = $('.search-form').find('input').serialize(); query = query.replace(/(&|^)(\w*?\d*?\-*?_*?)*?=?((?=&)|(?=$))/g,''); query = query.replace(/^&/g,''); if( url.indexOf('?')>0 ){ url += '&' + query; }else{ url += '?' + query; } window.location.href = url; });改造後的程式碼
//搜尋功能 $("#search").click(function(){ var url = $(this).attr('url'); var status = $("#sch-sort-txt").attr("data"); var query_obj= $(".search-form input").filter(function(index) { return $(this).val() != ''; });//篩選為空的項 var query = query_obj.serialize(); if(status != ''){ query = 'status=' + status + "&" + query; } if( url.indexOf('?')>0 ){ url += '&' + query; }else{ url += '?' + query; } window.location.href = url; });感謝碼農小兵 http://www.devdo.net/onethink-search-optimization.html