AJAXRequest의 브라우저 호환성을 실수로 테스트했을 때 IE에서 AJAXRequest.update 메서드에 일부 문제가 있는 것을 발견했습니다.
AJAXRequest.update 메소드를 호출할 때 문제가 발생합니다. 업데이트 간격과 업데이트 횟수가 제공되면 IE에서 문제가 발생합니다. 구체적인 표현은 업데이트 간격이 제공되면 기능이 작동한다는 것입니다. 업데이트 번호가 제공되면 해당 기능은 지정된 업데이트 횟수 이후 실행을 중지할 수 없습니다.
여러 가지 예를 테스트한 결과 IE에서는 setTimeout과 setInterval이 매개변수 전달을 지원하지 않는 문제를 발견했습니다.
데모 주소: http://www.xujiwei.cn/demo/usetimer/
Netscape의 JavaScript 참조에 있는 setTimeout 구문은 다음과 같습니다.
setTimeout
지정된 밀리초가 경과한 후 한 번 표현식을 평가하거나 함수를 호출합니다. >구문
setTimeout(expression, msec)
setTimeout(function, msec, arg1, ..., argN)
매개변수
expression JavaScript 표현식을 포함하는 문자열
msec 숫자 값. 또는 밀리초 단위의 숫자 문자열.
function 모든 함수.
arg1, ..., argN (선택 사항) 인수가 있는 경우
두 번째 방법입니다. 이를 사용하는 방법은 타이머를 정의하는 것입니다. 함수를 실행할 때 setTimeout을 호출할 때 정의된 매개변수를 함수에 전달합니다. 그러나 IE에서는 이 호출 방법이 지원되지 않습니다. 이 매개변수를 받지 않습니다. 예:
Firefox 및 Opera에서는 브라우저가 프롬프트 상자를 올바르게 팝업하여 "my site: www.xujiwei.cn"이라는 문자열을 표시할 수 있지만 IE에서는 표시되는 내용은 "my site: undefine"입니다. 이는 show 함수가 str 매개변수를 수신하지 않았으므로 정의되지 않은 변수로 표시된다는 의미입니다.
물론, 함수 내부에 사용된 변수가 전역 변수라면,
url 변수는 전역 변수이므로 타이머 실행으로 정의된 "show(url);" 명령문 세그먼트는 매개 변수를 올바르게 전달할 수 있습니다. 하지만 url이 전역 변수가 아닌 경우 로컬 변수인 경우 실행 결과가 틀립니다.