Гиперссылка на вызов (tel:), номер пуст при вызове через javascript

#javascript #href #tel

#javascript #href #tel

Вопрос:

У меня есть простая панель навигации WordPress, в которую я хотел включить tel: ссылку для автоматического вызова веб-сайта компании.

Из-за миллионов проблем с сохранением <a> ссылки внутри навигационной панели я выбрал <button> и добавил JS-код для выполнения перенаправления.

 document.querySelector('.btn--call').addEventListener('click', function () {
        window.open('tel:'   this.innerText, '_self'); //same effect for using `_system`)
    });
  

Проблема в том, что когда я нажимаю кнопку, я перенаправляюсь на страницу телефона, но номер, по которому я звоню, пуст.
Полученная переменная является правильной, поскольку в журнале консоли this.innerText выводится ожидаемое значение.
Проблема также не с веб-сайтом, потому что у меня есть <a href="tel:...> в каком-то другом месте, и это работает как шарм.

Я пытался использовать window.location.href='tel:' this.innerText; , но эффект был тот же.

Есть ли какой-либо способ, которым я мог бы правильно проанализировать номер без необходимости изменять его на <a> ?

Любая помощь была бы очень признательна.

Комментарии:

1. Из любопытства, я не так хорошо знаком с WordPress, в чем проблемы с использованием ссылок в панели навигации? Разве это не то, куда должны идти ссылки?

2. Обычно это так. Проблемы начинаются, когда вы хотите, чтобы одна из ссылок была блоком с абсолютным расположением с оформлением кнопки. WP хорош, но обычно он жестко контролирует применяемые стили

Ответ №1:

Попробуйте это, он обращается к элементу через target, а не this через обработчик событий.

 document.querySelector('.btn--call').addEventListener('click', function (e) {
        location.href = 'tel:'   e.target.innerText;
    });
  

Комментарии:

1. Нет. Тот же эффект. e.target и this , по сути, являются одними и теми же объектами, если, я думаю, не используются функции стрелки. Спасибо за отзыв!

2. @aln447 вы использовали мой точный код, потому что у меня была опечатка в location.href ?

3. Нет. Я использовал только конечную сторону. Теперь я попробовал это с location.href вместо window.location.href . К сожалению, тот же результат