2009-10-06 3 views
3

내가 사랑하는 브라우저 IE (모든 버전)와 jquery의 tab ui 컨트롤에 문제가 있습니다. 탭에 대한 내용을 ajax 옵션으로로드합니다. 문제는 내가 동기식으로 그렇게해야만하기 때문에 각각의 요청이 비동기 적으로 발생하기 때문이다. 나를 위해 작동하지 않거나 그냥 아주 버그가 있습니다. 그러나 이것은 문제가 아닙니다. 문제는 IE가 jquery 코드의 모든 실행을 잠그기 전에 ui-state-processing을 적용하지 않는다는 것입니다. IE가 다른 모든 브라우저와 다르게 동작하는 것으로 보입니다. 일단 요청이 완료되면 클래스가 처리 된 즉시 탭 요소에 적용되어 모든 것이 완료됩니다.jquery ui async ajax 요청이 false로 설정됩니다.

누구에게 어떤 생각이 있습니까? 알려진 문제?

Btw, 비동기 옵션을 true로 설정하면 완벽하게 작동합니다.

+0

IE와 동일한 문제가있었습니다. async가 true로 설정된 경우 UI를 업데이트하지 않습니다. 내 응용 프로그램을 비동기로 재 작업해야했습니다. 더 복잡하고 성가신. –

+0

IE8에서도 마찬가지입니다. –

+0

예 IE8에서도 마찬가지입니다. 매우 짜증나! –

답변

3

예, 이것이 IE의 기능입니다. 기본적으로 브라우저는 다음과 같이 작동합니다.

while (stillRunning()) { 
    renderDOM(); 
    getNextInputEvent(); 
    runScripts(); 
} 

즉, 스크립트 실행이 완료 될 때까지 DOM을 업데이트하지 않습니다. 이제 IE조차도 경우에 따라 DOM을 순차적으로 업데이트합니다 (경고() 또는 확인() 만 마음에 듭니다) 일반적으로 그렇지 않습니다. 다른 브라우저는 때로는 순서에 따라 DOM을 업데이트 할 것입니다.이 문제는 사용자가 직면 한 것입니다. 즉, IE를 실행하지 않는 브라우저가 스크립트 실행 단계에서 멈추지 않고도 DOM을 업데이트하는 경우입니다. 호출, 그것은 당신이 반환 값을 얻을 때까지 스크립트를 끝내지 않고있다).

비동기 적으로 실행하면 브라우저가 스크립트 실행 단계에서 멈추지 않으므로 UI를 무료로 업데이트 할 수 있습니다.

대부분의 웹 응용 프로그램에서 비동기 호출을 사용하는 이유는 다음과 같습니다. 그 (것)들을하는 것은 당신의 공용 영역을 얼기 때문에.

+0

문제는 동기화 요청이 문제가된다는 것입니다. 나는 당신이 정확히이 문제를 피하기 위해 요청을 시작해야합니다 후로드를 적용해야보다 탭을 클릭하면 뜻. 그런 식으로 큐잉하면 해결할 수 있습니다. jquery 페이지에 틱을 열었지만 아직 답변이 없습니다. –

+0

elem.className = "loading"과 같은 것을 시도해보십시오; window.setTimeout (function() {startAjaxLoad();}, 0); ... 그렇게하면 Ajax 호출을하기 전에 클래스에 IE를 적용 할 시간을줍니다. –

관련 문제