سؤال

هل هناك طريقة لتصحيح أخطاء كل حدث JavaScript أو تتبعه في Internet Explorer 7؟

لدي خطأ يمنع التمرير بعد تحديد النص، وليس لدي أي فكرة عن الحدث أو الإجراء الذي أدى إلى ظهور الخطأ.أريد حقًا معرفة الأحداث التي يتم تشغيلها عندما أقوم بتحريك الماوس على سبيل المثال.

إن إعادة توصيل المصدر يتطلب الكثير من العمل وتمنيت أن يكون هناك شيء يشبه المتشمم الذي يريني كل الأحداث التي تم تشغيلها.

هل كانت مفيدة؟

المحلول

بوركدود قال:

قد ترغب في تجربة Visual Studio 2008 وميزاته لتصحيح أخطاء تعليمات JavaScript البرمجية.

لقد قمت بالتنقيب في التعامل مع الأحداث عدة مرات، وفي رأيي، على الرغم من أن مصححات الأخطاء الكلاسيكية مفيدة لتتبع عمليات تشغيل التعليمات البرمجية الطويلة، إلا أنها ليست جيدة في تتبع الأحداث.تخيل أنك تستمع إلى أحداث تحريك الماوس وتقتحم تطبيقًا آخر في كل حدث...لذا، في هذه الحالة، أنصحك بشدة بالتسجيل.

إذا لم تكن المشكلة خاصة بـ Internet Explorer 7 ولكنها حدثت أيضًا في Firefox، فإن الطريقة الجيدة الأخرى لتصحيح أخطاء كود JavaScript هي Firefox و فايربوغ الوظيفة الإضافية التي تحتوي على مصحح أخطاء JavaScript.

وهناك أيضا فايربوج لايت لبرنامج إنترنت إكسبلورر.لم تتح لي الفرصة لاستخدامه، لكنه موجود.:-) الجانب السلبي منه هو أنه لا يحتوي على مصحح أخطاء كامل، ولكنه يحتوي على كائن window.console، وهو بالضبط ما تحتاجه.

نصائح أخرى

قم بالمرور عبر جميع العناصر الموجودة في الصفحة التي تحتوي على وظيفة onXYZ المحددة ثم قم بإضافة التتبع إليها:

var allElements = document.all; // Is this right? Anyway, you get the idea.

for (var i in allElements) {
    if (typeof allElements[i].onblur == "function") {
        var oldFunc = allElements[i].onblur;
        allElements[i].onblur = function() {
             alert("onblur called");
             oldFunc();
        };
    }
}

قد ترغب في تجربة Visual Studio 2008 وميزاته لتصحيح أخطاء تعليمات JavaScript البرمجية.

إذا لم تكن المشكلة خاصة بـ Internet Explorer 7 ولكنها حدثت أيضًا في Firefox، فإن الطريقة الجيدة الأخرى لتصحيح أخطاء كود JavaScript هي Firefox و فايربوغ الوظيفة الإضافية التي تحتوي على مصحح أخطاء JavaScript.ثم يمكنك أيضًا وضع console.log البيانات في كود JavaScript والتي يمكنك بعد ذلك رؤية مخرجاتها في ملف نافذة وحدة التحكم في Firebug، بدلاً من استخدام التنبيهات التي تؤدي في بعض الأحيان إلى إفساد سلسلة الأحداث.

@[nickf] - أنا متأكد تمامًا document.all هو امتداد خاص ببرنامج Internet Explorer.

تحتاج إلى إرفاق معالج الأحداث، فلا توجد طريقة "لمشاهدة" الأحداث فقط.سيوفر لك إطار عمل مثل jQuery التابع لمكتبة Microsoft Ajax طرقًا لإضافة معالجات الأحداث بسهولة.يعد jQuery رائعًا بسبب إطار التحديد الخاص به.

ثم أستخدم Firebug (امتداد Firefox) وأضع نقطة توقف.أجد أن إعداد Firebug وتفكيكه أسهل كثيرًا من Visual Studio 2008.

إنه أمر أساسي، ولكن يمكنك لصق التنبيهات أو مكالمات المستند عند تشغيل شيء ما.

الطريقة الواضحة هي إعداد بعض التنبيهات لأحداث مختلفة مثل:

element.onclick = function () { alert('Click event'); }

وإلا فإن لديك خيارًا أقل تدخلاً لإدراج تنبيهاتك في dom في مكان ما.

لكن فكر بجدية في استخدام مكتبة مثل مسج لتنفيذ وظائفك.يتم حل الكثير من المشكلات عبر المتصفحات ولن تحتاج إلى حلها مرة أخرى.لست متأكدًا تمامًا من الوظيفة التي تحاول تحقيقها ولكن من المحتمل أن يكون هناك الكثير من التمرير واختيار المكونات الإضافية لـ jQuery التي يمكنك استخدامها.

لست متأكدًا من الكود الدقيق (لقد مر وقت طويل منذ أن كتبت كود JavaScript معقدًا)، ولكن يمكنك تعداد جميع عناصر التحكم في النموذج وإرفاق حدث يُخرج شيئًا ما عند تشغيل الحدث.

يمكنك أيضًا استخدام وظائف مجهولة لتغليف المعلومات الضرورية لتحديد الحدث الذي تم تشغيله.

أحد الأشياء التي أحب القيام بها هو إنشاء وظيفة ربط في JavaScript (مثل ما يمكنك العثور عليه في ملف النموذج المبدئي Library) خصيصًا للأحداث، بحيث يقوم بتمرير كائن "الحدث" إلى الوظيفة المرتبطة.الآن، إذا كنت ستفعل ذلك، فيمكنك ببساطة إجراء استدعاء تتبع سيتم استدعاؤه لكل معالج يستخدمه.ثم قم بإزالته عندما لا تكون هناك حاجة إليه.مكان واحد.سهل.

ومع ذلك، بغض النظر عن كيفية استدعاء عبارة التتبع، فإنك لا تزال ترغب في رؤيتها.أفضل استراتيجية هي أن يكون لديك جزء أو نافذة منفصلة لتسليم مكالمات التتبع. مجموعة أدوات دوجو يحتوي على وحدة تحكم مدمجة تعمل في Internet Explorer، وهناك أشياء أخرى مماثلة.الطريقة الكلاسيكية للقيام بذلك هي إنشاء نافذة جديدة و document.write إليها.

  • أوصي بإرفاق تاريخ ووقت لكل أثر.لقد ساعدني بشكل كبير في الماضي.
  • عادةً لن يساعدك تصحيح الأخطاء والتنبيهات، لأنها تقاطع تدفق الأحداث العادي.

مات بيرسيث لديه شيء قد يكون نوع الشيء الذي تبحث عنه تصحيح أخطاء تطبيقات ASP.NET AJAX باستخدام عنصر تحكم AjaxControlToolkit لوحدة التحكم بالتتبع.

انها تقوم على ياهو يوي المسجل, واجهة المستخدم 2:المسجل.

اقتراحي هو استخدام FireFox مع FireBug واستخدام كائنات Debug/Trace المضمنة.إنهم سحر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top