Навигация по нажатию кнопки «Сбой» с первым параметром по умолчанию из-за MouseEvent - PullRequest
0 голосов
/ 13 ноября 2018

Я сталкиваюсь со странной проблемой, когда моя логика навигации записывает «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), но не второй.

Буду признателен за любую помощь. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...