2016-08-17 2 views
0

head 섹션에서 javascript 비동기를로드하려고합니다. 개발자 콘솔에서 페이지를로드 한 후 "jQuery가 정의되지 않았습니다"라는 오류가 발생합니다. 하나 또는 두 개의 새로 고침 스크립트가로드되어 완벽하게 작동합니다. "비동기"스크립트 태그가 없으면 작동하지 않습니다. 왜 이런 일이 일어나고 이것을 해결할 수있는 방법이 있습니까? 미리 감사드립니다머리 부분의 비동기 자바 스크립트가 새로 고침 페이지 후에 만 ​​작동합니다.

+2

스크립트가 jQuery를 사용하는 경우 스크립트가로드되기 전에로드되어야합니다. 스크립트를 ''태그 끝에두고 normaly로로드하는 것이 더 안전합니다. – Dellirium

답변

0

Dellirium이 말했듯이 JQuery는 자바 스크립트 코드 앞에 있어야합니다. <head>에 JQuery를 배치하고 본체 태그 <body>의 끝에서 실행중인 스크립트를 배치 해 볼 수 있습니다.

+0

경쟁 조건이 약간 덜 심각하지만 제거하지는 않습니다. 그것은 여전히 ​​실패 할 수 있습니다. – Gant

0

jQuery를로드 할 때 실행할 함수를 추가 할 수 있습니다.

<script src="jquery.js&callback=start"</script>

하는 & 콜백 = 당신이 주위에 당신의 코드를 포장하는 데 사용할 수있는 실제 자바 스크립트 파일에서 시작() 함수를 실행 시작합니다.

function start() { 

    /* your code */ 

} 

jQuery를 처음으로 찾을 수없는 이유는 브라우저가 완전히로드되었을 때 브라우저가 jQuery를 캐시하기 때문입니다. 처음으로 실제로 페이지를 방문하거나 강제로 다시로드 할 때 전체 파일을로드해야합니다.

0

script 태그에 async을 사용하면 페이지로드 중에 언제든지 스크립트를 실행할 수 있으므로 스크립트가 가끔씩 만 작동합니다. 약간 더 빠른 페이지로드를 위해 실행 순서를 알지 못하게합니다. 일반적으로로드하는 스크립트는 서로 의존하거나 정교한 로딩 방식을 사용하지 않아야합니다. 대개 비동기없이 실행되는 하나의 콜백 함수를 사용하고 의존성 보고서를 사용할 수 있다고보고하면 코드를 호출해야합니다.

async이 실제로 설치에 적합한 옵션인지 고려해야합니다.

관련 문제