#javascript #debugging #firebug
#javascript #отладка #firebug
Вопрос:
В последнее время я много занимаюсь ajax. Сценарий, который я повторяю снова и снова, это:
- загрузить страницу
- измените некоторые скрипты для этой страницы
- перезагрузите страницу с помощью ctrl f5 и посмотрите, работает ли это
Что я хочу сделать, так это сказать firebug перезагрузить только скрипты, а не всю страницу целиком, потому что разметка та же. В любом случае, как это сделать?
Комментарии:
1. Отличный вопрос. Экономия реального времени.
Ответ №1:
Во-первых, попробуйте свести к минимуму этот вид тестирования. Напишите атомарный, СУХОЙ код и модульный тест, прежде чем складывать его на сайт / страницу. Вы можете быстро выполнить некоторые из этих действий в консоли Firebug.
Далее, если JS, который вы перезагружаете, устанавливает интервалы или прослушиватели событий, тогда вам захочется очистить эти интервалы и отвязать эти прослушиватели перед перезагрузкой тестируемого JS. Это означает, что анонимные интервалы и обработчики событий запрещены.
Создайте JS-файл, который вызывает clearInterval()
, removeEventListener()
и .unbind()
по мере необходимости.
Затем вы можете запустить подобный код в консоли Firebug:
function addJS_Node (text, s_URL)
{
var scriptNode = document.createElement ('script');
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
document.head.appendChild (scriptNode);
}
addJS_Node (null, 'Path_to_JS/ResetTimersAndEvents.js');
addJS_Node (null, 'Path_to_JS/JS_Under_Test.js');
// etc.
Ответ №2:
Я думаю, что XRefresh может помочь. Он отслеживает изменения в ваших локальных папках и перезагружает их, когда они меняются (после сохранения), без перезагрузки всей страницы.
Согласно часто задаваемым вопросам на их сайте:
XRefresh также способен заменить связанный извне JS-файл обновленной версией без перезагрузки всей страницы.
Однако в этом есть ограничения (и я не вижу никакого способа их обойти), о которых вы можете подробнее прочитать на их странице часто задаваемых вопросов.
Я все еще думаю, что это лучше, чем вообще не иметь возможности.
Надеюсь, это поможет.
Ответ №3:
Я думаю, что вам действительно нужно автоматическое тестирование. Напишите свои тесты, а затем просто запустите их повторно после внесения изменений в код.
Лучшим методом для этого в Firefox является webdriver.
Ответ №4:
В Firefox в настоящее время нет способа сделать это.
Если разметка такая же, то что не так с ctrl f5? Я предполагаю, что вы не хотите потерять данные в полях формы? Это снова вызывает проблемы, поскольку то, что происходит, если вы просто перезагружаете скрипты, и у этих скриптов есть события, которые запускаются при изменении полей формы, эти события никогда не запускаются и могут привести к тому, что страница окажется в состоянии, в котором она не должна быть.
Существуют некоторые плагины для браузера, которые позволяют автоматически заполнять поля формы одним нажатием кнопки заранее определенными значениями, это может быть хорошей альтернативой перезагрузке только скриптов. Похоже, что этот плагин для Firefox сделает именно этоhttps://addons.mozilla.org/en-US/firefox/addon/autofill-forms
Комментарии:
1. нет, у меня нет проблем с полями формы… только на мой вкус слишком медленно нажимать f5 каждый раз, когда я хочу увидеть результат кодирования…
2. Сколько времени занимает нажатие ctrl f5?
3. Я понимаю вашу точку зрения .. но представьте ситуацию, когда у вас есть какой-то рабочий процесс, и вы тестируете шаг 5.. Я кое-что изменил в скрипте и хочу увидеть результат на шаге 5…so то, что я хочу сделать, это просто перезагрузить в script и выполнить шаг 5, чтобы увидеть, работает ли это сейчас, не хочу перезагружать всю страницу, а затем выполнять шаги, пока не нажму на шаг 5 … ок? 😉
4. Я понимаю, что вы говорите, и согласен, что в этой ситуации это боль. Однако, если вы перейдете к пятому шагу, то я предполагаю, что DOM был изменен, и элементы на странице были перемещены, поэтому перезагрузка javascript вызовет больше проблем, поскольку любые переменные в области видимости будут потеряны, и скрипт / dom, вероятно, не будет синхронизирован.
5. Возможно, стоит взглянуть на seleniumhq.org если вы еще этого не сделали — это может облегчить процесс тестирования и повторной проверки рабочего процесса / шаги 1-5