2010-12-28 1 views
2

2 js 함수, request() 및 response()가 있습니다. 요청은 서버에 "스크립트"를로드하여 DOM에 동적 스크립트 태그를 삽입합니다. 서버에서 오는 스크립트가 response()를 호출하도록 설정되어 있습니다.Firefox에서 동적 스크립트 삽입시 "비동기"로드가 발생하지 않습니까?

이제 5 개를 즉시 호출하고 첫 번째 호출이 여전히 대기 중이면 다음 4 개의 호출이 여전히 수행되고 응답이 반환됩니다 (방화 광에서 본 것으로 나타남). 응답()은 첫 번째가 반환 될 때까지 호출됩니다.
이것은 Firefox에서만 발생합니다. :(

이유는이 함수 호출을하지

PS : 첫 번째 요청이 지연되고

  1. 경우, 내가 마지막 싶어, 그 결과에 대해 걱정하지 않는다 로드되고 지연없이 호출 응답 ..
  2. 데이터 유형이 'jsonp'로 설정된 $ .ajax, 스크립트 태그 및 $ .getScript의 순수한 자바 스크립트 스타일 삽입을 시도했습니다. FF로는 아무런 효과가없는 것으로 보입니다. (

편집 :

function request(){ 

    var URL = 'http://xxx.xxx.xxx.xxx/cgi-bin/response.php?callback=?'; 
    callHandle = $.getScript(URL); 

} 

function response(data){ 

     alert(data); 
} 

요청 기능은 다음 코드 한 서버의 PHP 스크립트를 호출 : 코드 샘플을 요청하는 사람들을 위해

$data = $_GET['callback']; //using just to identify request uniquely. 
sleep(rand(1,10)); 
echo "response(".$data.")"; 

첫 번째 요청이 10 초 소요 이제 경우, 두 번째 요청에 2 초가 걸리면 두 번째 요청에 대해 응답을 다시 호출해야합니다. 그러나 응답을 받고 있지만 경고 대신 Firefox에서 첫 번째 요청이 완료되기를 기다리고 있습니다. 이게 왜 그렇게?

+0

'request()'를 통해 DOM에 스크립트 태그를 어떻게 주입합니까? – cherouvim

+0

일부 코드는 게시하십시오. 그것 없이는 무엇이 잘못되었는지를 짐작하기가 어렵습니다. –

+0

코드가있는 원래 질문을 편집했습니다. – Shrinath

답변

2

같은 결과를 보았습니다. Firefox는 스크립트 요소가있는 순서대로 응답 응답 (document.createElement ('script')을 사용하여 javacript를 포함하고 head-Node에 추가)을 처리했습니다. 문서에 추가됩니다. 프로그래머 관점에서 이것은 프로그래밍을 단순화합니다. 그러나, 나는 이것을 당신이이 브라우저 (버전)의 구현 세부 사항으로 간주해야한다고 보장하지는 않는다. Google 크롬은 포함 된 스크립트를 (예기치 않은) 순서로 실행합니다. 파이어 폭스 4와 HTML5 준수

스크립트 삽입 된 외부가 아닌 비동기, 비 (http://hsivonen.iki.fi/script-execution/)

올드 파이어 폭스 동작으로 볼 때

이 동작은 이미 "올드 파이어 폭스 행동"이라고합니다 그들은 문서에 삽입 된 순서로 실행 된 스크립트를 연기합니다.

document.write로 스크립트를 삽입 해 보았습니까?

+0

나는 이것을 인식하지 못했습니다 ... 도움을 주셨습니다. – Shrinath

관련 문제