2008-10-17 4 views
2

ASP.Net 2.0에 구현 된 콜백 구조를 사용하는 .NET 웹 컨트롤을 구현했습니다. 자동 차단 컨트롤이며 IE 6.0/7.0 및 Google 크롬에서 올바르게 작동합니다.Firefox에서 ASP.NET 2.0 콜백이 올바르게 작동하지 않습니다.

파이어 폭스에서
function ReceiveServerData(args, context) 
{ 
document.getElementById(context).style.zIndex = 300; 
document.getElementById(context).style.visibility = 'visible'; 
document.getElementById(context).innerHTML = args; 
fixHover(context); 
} 

, "인수는"항상 동일한 데이터, 그래서 내 드롭 다운의 표시가 항상 같은 항목이 표시되는 <div>의 innerHTML 다음은 관련 콜백 함수입니다. 내 클라이언트 쪽 코드를 doublechecked 및 올바른 정보를 클라이언트 -> 서버 및 반환 서버 -> 클라이언트 보내고 있습니다. 참고로

는 .NET 프레임 워크에 의해 생성 된 "WebForm_DoCallback"기능으로, 다음 코드가 호출지고 :

if (setRequestHeaderMethodExists) { 
xmlRequest.onreadystatechange = WebForm_CallbackComplete; 
callback.xmlRequest = xmlRequest; 
xmlRequest.open("POST", theForm.action, true); 
xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
xmlRequest.send(postData); 
return; 
} 

및 콜백 기능 ReceiveServerData는 xmlRequest.open("POST", theForm.action, true);xmlRequest.send(postData);에 두라고합니다. 이것이 오류를 일으키는 지 궁금하지만, 디버깅 기술이 끝났습니다.

편집 됨 - ReceiveServerData가 드롭 다운을 처음 사용할 때 두 번 호출되지 않습니다. 실제로 드롭 다운은 첫 번째 키 입력에 대해 올바르게 작동합니다. 그것은 작동을 멈추고 첫 번째 키 스트로크 후 이전 반환 데이터로 콜백을 두 배로 만듭니다.

답변

0

나는이 도움이 될 경우 확실하지 오전하지만 난이 (축소 된 코드)와 같은 ASP.NET 2.0 콜백을 패치 한 : 당신이 WebForm_CallbackComplete의 실제 구현을 선택하면

function WebForm_CallbackComplete() 
{ 
    for(var i=0; i< __pendingCallbacks.length;i++) 
    { 
     var _f3=__pendingCallbacks[i]; 
     if(_f3 && _f3.xmlRequest && (_f3.xmlRequest.readyState==4)) 
     { 
      __pendingCallbacks[i]=null; 
      WebForm_ExecuteCallback(_f3); 
      if(!_f3.async) 
      { 
       __synchronousCallBackIndex=-1; 
      } 
      var _f4="__CALLBACKFRAME"+i; 
      var _f5=document.getElementById(_f4); 
      if(_f5) 
      { 
       _f5.parentNode.removeChild(_f5); 
      } 
     } 
    } 
} 

당신은 몇 가지 문제를 발견 할 . 양식 태그에서 해당 자바 스크립트를 붙여 넣으면 효과가 있는지 확인할 수 있습니다.

0

더 많은 정보를 제공해야한다고 생각합니다. asp.net에 내장 된 js 때문에이 문제가 발생하지 않을 가능성이 높습니다. 이벤트가 키 입력을 캐치하도록 설정되는 방법, 실수로 이벤트를 추가합니까? 스크립트 서비스가 어떻게 호출되고 있습니까? 모든 기본 사항을 다시 한 번 확인하여 미친 듯하고 단순한 내용이 아닌지 확인하십시오.

관련 문제