Определите, какая функция JavaScript изменяет элемент страницы при загрузке? - PullRequest
4 голосов
/ 25 февраля 2010

У меня много jquery, который выполняется при загрузке страницы, и это приводит к тому, что один из моих элементов исчезает (делая его style = display: none;). Я предполагаю, что функция jquery hide () была применена к этому элементу по ошибке, но я не могу выяснить, какое утверждение вызывает его.

Существует ли какая-либо функция или инструмент javascript, firebug и т. Д., Которые по сути будут выступать в качестве точки останова / прослушивателя для элемента html (возможно, такого, который я могу запустить в своем браузере)? Было бы здорово увидеть, какая функция влияет на этот элемент при загрузке страницы.

Ответы [ 2 ]

4 голосов
/ 25 февраля 2010

Хах! Я только что нашел ответ, который хотел. На вкладке HTML в Firebug есть функция "break on mutate", которая покажет вам, какая строка в файле javascript изменяет html-элемент. Это в Firebug 1.5, и новое обновление 1.5.2, выпущенное сегодня, переместило иконку, так что я заметил это и нашел его просто по счастливой случайности!

http://www.softwareishard.com/blog/firebug/firebug-15-break-on-next/

Спасибо за ваши попытки, ребята!

1 голос
/ 25 февраля 2010

Вы можете найти доступ к элементу с помощью методов получения / установки. Тем не менее, метод setter, похоже, не работает с chrome ... он работает с последней версией minefield [firefox beta], хотя ... так что вы можете проверить это, я думаю =)

myElement.style.__defineSetter__("backgroundColor", function(val)
{
  var cur = arguments.callee;
  var callLog = "";
  while(cur != null)
  {
   callLog = cur.caller + "\n" + callLog;
   //alert(cur.caller);
   cur = cur.caller;
  }
  alert(callLog);
 }
);

О, но это не позволит вам на самом деле "установить" переменную. для этого вы определяете фиктивную переменную и устанавливаете ее. Затем, когда вы определяете свой геттер [с __defineGetter__], вы возвращаете это значение

...