Ich bin versucht, Javascript try/catch zu wickeln, wie auf gesehen http://pastebin.com/f579d999dProbleme mit jQuery Interna, fn.bind/fn.apply auf draggables (versuchen, eine bessere Fehlerbehandlung zu tun)
Es funktioniert gut, es ist im Grunde wickeln alles in einem try/catch lassen Sie Fehler wie diese fangen: (ich werde es auf Server bereitstellen und dann)
$.handleErrors(function(e){
console.log("an error occurred");
console.log(e);
});
Allerdings funktioniert das nicht für draggables oder resizables (aber für alles andere). Wenn Sie beginnen, ein Element zu ziehen/zu vergrößern, stoppt es nicht beim Mouse Up (macht den Drag für immer)
Es scheint, als ob die ofn.apply() nicht auf ziehbare/veränderbare funktioniert.
Insbesondere (verkürzt):
ofn = fn; wfn = function() { ofn.apply(this, arguments); }; fn = wfn;
Aber für alle anderen Veranstaltungen.
-Code-Block):
$.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);
Ich bin ziemlich viel hier verloren, und ich kann nicht jede Ressource finden zu sagen, warum das nicht funktionieren sollte (ich nicht einmal jemand finden wer hat die gleichen Probleme)
Also meine Frage ist:
- die obige Methode funktioniert wie ein OK Weg scheinen Fehler mit jQuer zu fangen y
- Hat jemand das gleiche Problem erlebt (und es fest)
- Habe ich falsch verstehen etwas, und ich sollte einfach nicht rufen ziehbar Ereignisse
Grüße, Niklas
-Update 2011-08 -28, der vollständige Code (in Betrieb) ist jetzt:
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);
};
Wenn jemand mehr Tipps hat, wie es zu verbessern (die ursprüngliche Funktion von 012.377.) Bitte lassen Sie mich in einem Kommentar wissen.
Ich habe Setup eine Demo auf http://bivald.com/jquerydraggable.html (arbeiten klicken, funktioniert nicht auf drag) - Ich teste alles in Chrome –