나는 내 웹 사이트에 설치 스크립트와 웹 서비스를 추적하는 번호가 나는 서비스 중 하나가 다운 될 때, 그것은 여전히 다른 서버에서 호스팅 자바 스크립트 파일 외부를 호출하려고 나타났습니다. Firefox, Chrome 및 기타 새로운 브라우저에서는 서비스 중 하나가 중단 될 때 문제가없는 것 같습니다. 그러나 IE7과 IE8에서는 내 페이지가 모두로드되기 전에 모든 페이지가로드되지 않고 시간이 초과되지 않습니다. 그들이 아래로 갈 때 내 페이지를 깨는 것을 막기 위해 이러한 자바 스크립트 호출에 시간을 추가 할 수있는 방법이 있습니까?외부 자바 스크립트 시간 초과
답변
당신은 JS와 페이지로드 후 동적으로로드 할 수 있습니다. JS 파일이 다른 서버에있는 경우 그렇게하면 브라우저는 "브라우저 사용 중"표시기를 표시하지만 원래 페이지가로드됩니다.
자신의 사이트에서 JS를 가져올 수있는 경우 페이지로드 후 (또는 jQuery의 $.ajax(...)
과 같이 JS 라이브러리의 헬퍼를 사용하여) XMLHttpRequest
으로로드 한 다음 평가를 수행 할 수 있습니다. 이렇게하면 가져 오기 자체에 브라우저 사용 중 표시기가 표시되지 않습니다.
자신의 사이트에서 JS를 가져 오려면 추적 공급자 (공식적으로 지원되지는 않지만 일반적으로 작동하지 않음)에서 다운로드 할 수 있습니다. - 때때로 새 버전을 다시 가져 오는 것을 잊지 마십시오. 자신의 사이트에서 "포워딩 (forwarding)"서비스를 사용하여 추적 공급자로부터 정보를 가져 와서 잠시 동안 로컬에 캐시합니다. 이 방법은 JS가 staleness의 위험에 처하지 않을 것입니다.
는 스티브 수 더스는 deferred loading of scripts and browser-busy indicators에 대한 자세한 정보가 있습니다.
시도 연기 속성이 에 스크립트가 브라우저가 선택적으로 스크립트를 해석 연기 할 수 있도록 가 콘텐츠를 생성하지 않는 브라우저를 힌트를 제공 defer="defer"
추가. 이 성능을 향상시킬 수 있습니다 본문 내용을 분석하고 렌더링 후 때까지 스크립트의 실행을 지연시켜.
편집하는 것은
이 페이지가로드 될 때까지 실행하는 스크립트를 방지 할 수 있습니다 :
function loadjs(filename) {
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", filename);
}
window.onLoad = function() {
loadJs("http://path.to.js");
loadJs("http://path.to2.js");
...
}
+1 좋은 링크입니다. –