Я сталкиваюсь со странной проблемой, когда моя логика навигации записывает «MouseEvent» (в Chrome Dev Tools), когда я нажимаю кнопку. Ожидаемый результат - перейти на соответствующую страницу с помощью URL-адреса кнопки (но я сейчас только регистрирую его во время отладки).
Я не могу использовать синтаксис ES2015 (используя параметры по умолчанию), поскольку он является устаревшей кодовой базой и должен работать в нетрадиционных (IE) браузерах, поэтому в объявлении функции указаны переменные Babel.js-ified.
Примечание: Переменные в функции идентичны, за исключением их соответствующих индексов (0
и 1
). Они также должны остаться, потому что я вызываю эту функцию в другом месте сайта и не хочу каждый раз передавать аргументы.
Вот пример расширенного кода, но посмотрите Fiddle , чтобы увидеть вход в действие.
HTML:
<p>Activate User?</p>
<input type="button" value="Continue" class="js-button" data-url="/success.htm"/>
<input type="button" value="Back" class="js-button" data-url="/index.htm"/>
JS:
// Buttons array
var inputButtons = document.getElementsByClassName('js-button');
// Listen for button click and navigate according to data-url
for (var i = 0; i < inputButtons.length; i++) {
inputButtons[i].addEventListener('click', navigateToPage, false);
}
// Navigate by grabbing URL from clicked button
function navigateToPage() {
var _pageURL = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getAttribute('data-url');
var _altURL = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getAttribute('data-url');
// this doesn't work
console.log('First console.log: ', _pageURL);
// but this does
console.log('Second console.log: ', _altURL);
// Why? I don't even know what's going on here.
}
Есть идеи, почему у меня такое поведение? Я не знаю, почему первый var записывает это «MouseEvent» (опять же, в Chrome Dev Tools), но не второй.
Буду признателен за любую помощь. Спасибо!