2010-11-22 3 views
0

그것은, 그것은 기본적으로 잘 작동 http://pastebin.com/f579d999d문제, fn.bind/fn.apply (더 나은 예외 처리를하려고 노력) draggables에

에서 볼 수 있듯이 나는 자바 스크립트 시도/캐치를 감싸려고 노력하고있어 이 같은 오류를 잡을시키는 시도/캐치 모든 것을 포장 :

$.handleErrors(function(e){ 
    console.log("an error occurred"); 
    console.log(e); 
}); 

그러나,이 draggables 또는 resizables 작동하지 않습니다 (그리고 내가 서버에 게시거야) (단, 그 밖의 모든 것). 요소를 드래그/크기 조정하기 시작하면 마우스를 올리면 멈추지 않습니다 (드래그를 영원히 만듭니다)

마치 dranable/resizable에서 ofn.apply()가 작동하지 않는 것처럼 보입니다. 특히 (단축)

:

  ofn = fn; 
      wfn = function() { 
       ofn.apply(this, arguments); 
      }; 
      fn = wfn; 

그러나 다른 모든 이벤트에 대한

.

코드 블록) :

 $.fn.bind = function(type, data, fn) { 
     var ofn, wfn; 
     if (!fn && data && $.isFunction(data)) { 
      fn = data; 
      data = undefined; 
     } 
     if (fn && type.indexOf("error") === -1) { 
      ofn = fn; 
      wfn = function() { 
      try { 
       ofn.apply(this, arguments); 
      } catch(e) { 
       handler(e); 
       return false; 
      } 
      }; 
      fn = wfn; 
     } 
     return jbind.call(this, type, data, fn); 

나는 거의 여기에 잃었어요, 나는이 (심지어 사람을 찾을 수없는 작동하지해야하는 이유를 말하는 모든 리소스를 찾을 수 없습니다

  1. 이 jQuer와 오류를 포착하는 확인 방법처럼 위의 방법 보이는가 : 누가 같은 문제)

    그래서 내 질문은있다 Y

  2. 는 사람이 같은 문제를 경험 (그리고 고정)

감사합니다, 니클라스

업데이트를

  • 내가 뭔가를 오해 말고, 단순히 드래그 이벤트에이 전화를 안 가지고 2011-08 -28, 전체 코드는 지금 (일) :

    jQuery.fn.bind = function(type, data, fn) { 
        if (!fn && data && typeof data == 'function') { 
         fn = data; 
         data = null; 
        } 
    
        if (fn) 
        { 
         var origFn = fn; 
         var wrappedFn = jQuery.proxy(origFn, function() { 
          try { 
           origFn.apply(this, arguments); 
          }catch (ex) { 
           return trackError(ex); 
          } 
         }); 
         fn = wrappedFn; 
        } 
        return jQueryBind.call(this, type, data, fn); 
    }; 
    

    누구를 (원래의 기능은 012,377,547에서입니다 개선하는 방법에 대한 자세한 도움말이있는 경우) 내 의견에 알려 주시기 바랍니다.

  • +0

    내가 설정을했습니다를 http://bivald.com/jquerydraggable.html에 데모 (드래그 작동하지 않는, 클릭 작업) - 크롬에서 모든 것을 테스트하고 있습니다. –

    답변

    0

    Re : 1 - 우리도 똑같은 일을하며 꽤 잘하는 것 같습니다.

    제목 : Re : 2 - 예. 무슨 일이 일어나고 jQuery UI는 원래 함수를 래핑하면 "mousemove.draggable"을 바인딩 해제 할 수 없습니다. 수정 프로그램 (jQuery의 프록시 기능에서 적응) 아래의 라인을 추가하는 것입니다

    // Set the guid of unique handler to the same of original handler, so it can be removed 
    wfn.guid = ofn.guid = ofn.guid || wfn.guid || jQuery.guid++; 
    
    +0

    매력처럼 작동하고, 두 번째 해결책을 찾았으며, jQuery.proxy를 사용했습니다. var wrappedFn = jQuery.proxy (origFn, function() {' –

    +0

    Jamey, 댓글 작성자 http://blogs.cozi.com/tech/2008/04/javascript-error-tracking-why-windowonerror-is-not-enough.html (동일한 프로필 사진 포함)을 사용하면 반환 코드를 포함하여 전체 코드를 공유 할 수 있습니까? –

    +0

    오, 잘 알고 있습니다. 그렇다면 대신 함수를 사용하고 있습니다. 다시 한 번 감사드립니다! –