1

IE8 이상을 제외한 대부분의 브라우저에서 다음과 같이 완벽하게 작동합니다. 처음 페이지를 방문하거나 Ctrl + F5 (캐시 지우기)를 클릭하여 페이지를 볼 때만 실행됩니다. . 무슨 일이 일어나고있는지는이 영향을받는 항목이 페이지의 마스터 레이아웃/템플릿에 있으므로 사이트를 가로 지르면로드되지 않습니다.첫 실행 후 javascript를 실행하지 않는 IE8

예를 들어 홈 페이지에 있습니다. 개인 섹션을 클릭하면 다음 페이지에로드 될 것으로 예상되지만 표시되지 않습니다.

$(document).ready(function() { 

    if (window.document.domain == "developer10.machine") { 

     var oScript = document.createElement('script'); 
     oScript.type = 'text/javascript'; 
     oScript.src = '/js/uk_converter.js'; 

     // most browsers 
     oScript.onload = function() { 
      renderCurrencyConverter('GBP', 'EUR', 1.00); 
     } 

     // IE 
     oScript.onreadystatechange = function() { 
      if (this.readyState == 'loaded' && ($.browser.msie && parseInt($.browser.version, 10))) 
      { 
       renderCurrencyConverter('GBP', 'EUR', 1.00); 
      } 
     } 
     document.body.appendChild(oScript); 
    } 
}); 

답변

3

이미 캐시에있는 스크립트의 src를 설정하면로드가 완료됩니다. src를 설정 한 후에 onload 처리기를 추가하기 때문에 onload 처리기가 호출되지 않습니다. 이미 핸들러를 설정 한 후에는 src를 설정하십시오.

$(document).ready(function() { 

    if (window.document.domain == "developer10.machine") { 

     var oScript = document.createElement('script'); 
     oScript.type = 'text/javascript'; 

     // most browsers 
     oScript.onload = function() { 
      renderCurrencyConverter('GBP', 'EUR', 1.00); 
     } 

     // IE 
     oScript.onreadystatechange = function() { 
      if (this.readyState == 'loaded' && ($.browser.msie && parseInt($.browser.version, 10))) 
      { 
       renderCurrencyConverter('GBP', 'EUR', 1.00); 
      } 
     } 

     oScript.src = '/js/uk_converter.js'; 
     document.body.appendChild(oScript); 
    } 
}); 

또는 시도 JQuery와 스크립트 로더 :

$(document).ready(function() { 
    $.getScript("/js/uk_converter.js", function() { 
     renderCurrencyConverter('GBP', 'EUR', 1.00); 

    }); 
}); 
+0

당신이 가능하게 예를 제공 할 수 있을까요? – Anicho

+0

글쎄, 네가 머리에 네 생각을하고 있는지 확인하고 싶다. – Anicho

+0

그래, 해보 려던 속임수를하지 않았다. – Anicho

관련 문제