2010-03-08 9 views
6

나는 내 웹 사이트에 설치 스크립트와 웹 서비스를 추적하는 번호가 나는 서비스 중 하나가 다운 될 때, 그것은 여전히 ​​다른 서버에서 호스팅 자바 스크립트 파일 외부를 호출하려고 나타났습니다. Firefox, Chrome 및 기타 새로운 브라우저에서는 서비스 중 하나가 중단 될 때 문제가없는 것 같습니다. 그러나 IE7과 IE8에서는 내 페이지가 모두로드되기 전에 모든 페이지가로드되지 않고 시간이 초과되지 않습니다. 그들이 아래로 갈 때 내 페이지를 깨는 것을 막기 위해 이러한 자바 스크립트 호출에 시간을 추가 할 수있는 방법이 있습니까?외부 자바 스크립트 시간 초과

답변

5

당신은 JS와 페이지로드 후 동적으로로드 할 수 있습니다. JS 파일이 다른 서버에있는 경우 그렇게하면 브라우저는 "브라우저 사용 중"표시기를 표시하지만 원래 페이지가로드됩니다.

자신의 사이트에서 JS를 가져올 수있는 경우 페이지로드 후 (또는 jQuery의 $.ajax(...)과 같이 JS 라이브러리의 헬퍼를 사용하여) XMLHttpRequest으로로드 한 다음 평가를 수행 할 수 있습니다. 이렇게하면 가져 오기 자체에 브라우저 사용 중 표시기가 표시되지 않습니다.

자신의 사이트에서 JS를 가져 오려면 추적 공급자 (공식적으로 지원되지는 않지만 일반적으로 작동하지 않음)에서 다운로드 할 수 있습니다. - 때때로 새 버전을 다시 가져 오는 것을 잊지 마십시오. 자신의 사이트에서 "포워딩 (forwarding)"서비스를 사용하여 추적 공급자로부터 정보를 가져 와서 잠시 동안 로컬에 캐시합니다. 이 방법은 JS가 staleness의 위험에 처하지 않을 것입니다.

는 스티브 수 더스는 deferred loading of scripts and browser-busy indicators에 대한 자세한 정보가 있습니다.

+0

+1 좋은 링크입니다. –

2

시도 연기 속성이 에 스크립트가 브라우저가 선택적으로 스크립트를 해석 연기 할 수 있도록 가 콘텐츠를 생성하지 않는 브라우저를 힌트를 제공 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"); 
    ... 
} 
+0

모든 브라우저에서 지원되지 않습니다. ( – orip

+0

Yah 나는 작동하지 않을 것이라고 생각합니다. IE가 외부 JS 파일에 연결하려고 시도하고 기본 시간 초과가 너무 높게 설정되어 있다고 생각합니다. Firefox와 다른 브라우저 파일이 응답하지 않고 그에 따라 이동하는 것을 신속하게 알고있는 것 같습니다. 그걸 막을 수있는 방법이 있는지 궁금합니다 .... – mike

+0

글쎄, 당신은 자바 스크립트를 사용하여 외부 자바 스크립트 파일을로드 할 수 있습니다. '