مشاكل مع مسج الداخلية, fn.ربط/الجبهة الوطنية.تنطبق على draggables (تحاول أن تفعل أفضل التعامل مع استثناء)
-
27-09-2019 - |
سؤال
أنا كنت أحاول أن التفاف جافا سكريبت حاول/catch كما رأينا على http://pastebin.com/f579d999d
أنه يعمل بشكل جيد ، فإنه في الأساس التفاف كل شيء في محاولة/الصيد مما يتيح لك التقاط الأخطاء مثل هذا:
$.handleErrors(function(e){
console.log("an error occurred");
console.log(e);
});
(ثم سأقوم بعد ذلك إلى الخادم)
إلا أن هذا لا يعمل من أجل draggables أو resizables (ولكن كل شيء آخر).إذا كنت تبدأ في سحب/تغيير حجم عنصر ، الأمر لا يتوقف على الماوس حتى (صنع السحب إلى الأبد)
يبدو كما لو أن أوفن.تطبيق() لا يعمل على قابل للسحب/يمكن تغيير حجم.
على وجه التحديد (مختصرة):
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);
أنا فقدت هنا وأنا لا يمكن العثور على أي مورد قائلا لماذا هذا يجب أن لا تعمل (لا أستطيع العثور على أي شخص لديه نفس القضايا)
لذا سؤالي هو:
- هل الطريقة المذكورة أعلاه يبدو وكأنه وسيلة موافق للقبض الأخطاء مع مسج
- أي شخص لديه خبرة في نفس المسألة (و ثابتة)
- لا تسيئوا شيء وأنا ببساطة لا نسمي هذا على الأحداث القابلة للسحب
التحيات ، نيكلاس
تحديث 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 );
};
إذا كان أي شخص لديه المزيد من النصائح حول كيفية تحسين ذلك (وظيفة الأصلي هو من http://blogs.cozi.com/tech/2008/04/javascript-error-tracking-why-windowonerror-is-not-enough.html) واسمحوا لي أن نعرف في التعليقات.
المحلول
Re:1 - نحن نفعل نفس الشيء ، ويبدو أن تعمل بشكل جيد جدا.
Re:2 - نعم.ما يحدث هو مسج واجهة المستخدم ليست قادرة على توثيق "mousemove.قابل للسحب" بمجرد التفاف الدالة الأصلية.الإصلاح هو إضافة خط تحت (مقتبس من مسج الوكيل وظيفة):
// 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++;