2011-09-24 8 views
1

처리 할 앵커 태그가 2500 개가 넘는 페이지가 있습니다. IE에서 이제 스크립트 중지 오류가 발생합니다. 배치로 할 수 있습니까? 500 번 실행 한 다음 다른 500 번 실행합니다 ?? 브라우저에서 스크립트 중지 오류를 방지하는 방법

ajaxLinks : function(el, flag) { 
    var links = $(el).find('a'); 
    var notLinkAr=["a[href^=javascript]","#toolbarId ul li>a","#tool_settings .link a",".page-action-links li>a","#tool_settings .label a",".success-map .success-tabs li>a",".success-map .sm_loggedin li>a", ".analyst_cat li>a",".modal",".layer",".newpage",".close",".hideFromPopup",".pagenum",".next",".prev",".delete_src",".tips","#hidr","#backr"]; 
    $(notLinkAr).each(function(index){ 
     var notLinkI=$(notLinkAr[index]); 
     if($(notLinkI).is("a")){ 
      if($(notLinkI).length>0){ 
       $(notLinkI).each(function(index1){ 
         $(notLinkI[index1]).addClass("dontAjaxify"); 
       }); 
      } 
     } 
    }); 
    $(links).each(function(i, obj){ 
     var link = $(obj); 
     if(!$(obj).hasClass('dontAjaxify')){ 
      link.attr('rel', link.attr('href')); 
      var rellnk = link.attr('rel'); 
      if(flag=='ajaxified') { 
       if(/http/.test(rellnk)){ 
        var relurl; 
        relurl=rellnk.replace((window.location.protocol + "//"+ window.location.hostname),'') 
        link.attr('rel', relurl);; 
       } 
      } 
      link.bind('click', function(e){} 

는 스피는 페이지 (2500 임)의 모든 앵커 태그에 대한 클래스 추가 ... 코드이다.

+0

태그에 대해 실행중인 스크립트는 무엇입니까 ?? – Baz1nga

+0

jquery를 사용하여 실행하십시오 – Harry

+0

sm 코드를 추가하십시오 .. 그렇지 않은 경우 추상 질문은 ... – Baz1nga

답변

1

jQuery의 .slice가 도움이 될 수 있습니다. http://api.jquery.com/slice/

var count = 0; 
var ajaxify = function (el, flags) { 
    var links = $(el).find('a').slice(count, count + 500); 
    count = count + 500; 

    // Do the processing here 

    if (links.length) { 
     // Call it next time only if some data is returned in the current call 
     setTimeout("ajaxify()", 5000); 
    } 
} 

위의 코드는 테스트되지 않지만, 아마 작동합니다.

+0

또한 성능을 향상시키기 위해 몇 가지 사항을 변경할 수 있습니다. 예 : 1. 모든 '링크'에 대해 루프를 실행 한 다음 if 조건을 적용하는 대신 선택기를 사용하여 필수 클래스가있는 링크 만 가져올 수 있습니다. 예 : var links = $ (el) .find ('a.dontAjaxify'); 2. addClass()를 전체 세트에 직접 적용 할 수 있습니다. 따라서 .each()를 사용할 필요가 없습니다. .addClass ("dontAjaxify") –

+0

끝 부분의 인수는 다음과 같이 기술되어 있으므로'slice (count, count + 499)'는'count + 500'을 읽어야합니다. 요소 _에는 포함되지 않은 _up입니다. 그래서 0에서 499까지의 요소에 대해'slice (0, 500)'가 필요합니다. – GKelly

+0

오타를 알아 채신 덕분에 @GKelly에게 감사드립니다. 그에 따라 대답을 편집했습니다. –

관련 문제