Как отслеживать события JavaScript, такие как onclick onblur?

Есть ли способ отлаживать или отслеживать каждое событие JavaScript в Internet Explorer 7?

У меня есть ошибка, которая предотвращает прокрутку после выделения текста, и я не знаю, какое событие или действие вызывает ошибку. Я действительно хочу видеть, какие события запускаются, например, при перемещении мыши.

Слишком много работы, чтобы перепрограммировать источник, и я как бы надеялся, что есть что-то вроде сниффера, который показывает мне все инициированные события.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
12
0
30 493
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

Это базовый вариант, но вы можете вставлять предупреждения или звонки document.write, когда что-то запускаете.

согласен, но источник не мой и тбх немного ... неряшливо

Mafti 18.09.2008 15:40

Возможно, вы захотите попробовать Visual Studio 2008 и ее функцию для отладки кода JavaScript.

Если проблема не является специфической для Internet Explorer 7, но также возникает в Firefox, то другим хорошим способом отладки кода JavaScript является Firefox и надстройка Firebug, в которой есть отладчик JavaScript. Затем вы также можете поместить операторы console.info в код JavaScript, который затем вы можете увидеть вывод в Окно консоли в Firebug, вместо использования предупреждений, которые иногда портят цепочку событий.

Из того, что я читал, это проблема только для IE7, поэтому Firebug не используется ... Что прискорбно, потому что он пинает все остальное.

Oli 18.09.2008 14:16

Я не уверен в точном коде (прошло некоторое время с тех пор, как я написал сложный код JavaScript), но вы можете перечислить все элементы управления в форме и прикрепить событие, которое выводит что-то, когда событие запускается.

Вы даже можете использовать анонимные функции, чтобы обернуть необходимую информацию для определения того, какое событие было инициировано.

Очевидный способ - настроить несколько предупреждений для различных событий, например:

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

В противном случае у вас есть менее навязчивый вариант размещения ваших предупреждений где-нибудь в домене.

Но серьезно подумайте об использовании библиотеки, такой как jQuery, для реализации вашей функциональности. Многие проблемы с кроссбраузерностью уже решены, и вам больше не нужно их решать. Я не совсем уверен в функциональности, которую вы пытаетесь достичь, но, скорее всего, есть много возможностей для прокрутки и выбора плагинов для jQuery, которые вы могли бы использовать.

Одна вещь, которую мне нравится делать, - это создавать функцию привязки в JavaScript (например, то, что вы можете найти в библиотеке Прототип) специально для событий, чтобы она передавала объект «событие» вместе с связанной функцией. Теперь, если бы вы сделали это, вы могли бы просто добавить вызов трассировки, который будет вызываться для каждого обработчика, который его использует. А затем удалите его, когда он не нужен. Одно место. Легко.

Однако, независимо от того, как вы вызываете оператор трассировки, вы все равно хотите его увидеть. Лучшая стратегия - иметь отдельную панель или окно для обработки вызовов трассировки. Набор инструментов Dojo имеет встроенную консоль, которая работает в Internet Explorer, и есть другие подобные вещи. Классический способ сделать это - создать новое окно и добавить к нему document.write.

  • Я рекомендую прикреплять дату и время к каждой трассе. В прошлом мне очень помогли.
  • Отладка и оповещения обычно вам не помогут, потому что они прерывают нормальный поток событий.
Ответ принят как подходящий

Borkdude сказал:

You might want to try Visual Studio 2008 and its feature to debug JavaScript code.

Я много раз занимался обработкой событий, и, на мой взгляд, хотя классические пошаговые отладчики полезны для отслеживания длинных прогонов кода, они не подходят для отслеживания событий. Представьте, что вы слушаете события перемещения мыши и взламываете другое приложение при каждом событии ... Так что в этом случае я настоятельно рекомендую вести журнал.

If the problem is not specific to Internet Explorer 7 but also occurs in Firefox, then another good way to debug JavaScript code is Firefox and the Firebug add-on which has a JavaScript debugger.

И еще есть Firebug Lite для Internet Explorer. У меня не было возможности им воспользоваться, но он есть. :-) Обратной стороной является то, что это не полноценный отладчик, но у него есть объект 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();
        };
    }
}

+1 за показ кода. Интересный подход ... Вы также можете развернуть здесь alert (), чтобы показать имя тега элемента и его идентификатор. Было бы даже лучше использовать ведение журнала консоли вместо alert (), особенно если у вас много элементов с обработчиками.

LarsH 21.10.2011 18:21

@ [nickf] - Я почти уверен, что document.all - это специфическое расширение Internet Explorer.

Вам нужно прикрепить обработчик событий, нет возможности просто «наблюдать» за событиями. Такой фреймворк, как jQuery библиотеки Microsoft Ajax, легко предоставит вам методы для добавления обработчиков событий. jQuery хорош своей структурой селекторов.

Затем я использую Firebug (расширение Firefox) и устанавливаю точку останова. Я считаю, что Firebug намного проще установить и удалить, чем Visual Studio 2008.

«document.all - это расширение IE». ... хорошо, что этот вопрос касается отладки в IE, тогда

nickf 20.09.2008 10:53

Я предлагаю использовать FireFox вместе с FireBug и использовать встроенные объекты Debug / Trace. Они очаровательны.

Прочитайте описание. Это проблема IE7.

Oli 18.09.2008 22:25

Другие вопросы по теме