Игнорировать предотвращение по умолчанию с помощью функции onclick - PullRequest
0 голосов
/ 05 сентября 2018

Я добавил пользовательскую ссылку «Просмотреть корзину» в сообщение Woocommerce после добавления товара в корзину. Ссылка показывает правильный URL, но ничего не делает при нажатии. Учитывая обстоятельства, я собираюсь предположить, что это происходит из-за метода protect.default, но я точно не знаю.

Ссылка находится внутри строки php и вызывает переменную с правильным URL-адресом корзины:

sprintf( __('Products successfully added to cart! <a href="%s" onclick="cartLink()" title="cart" class="notification-cart-link">View cart</a>','sf-theme'),$cartURL );

Что получается так:

<p id="addToCartMessage"><span class="text-success">Products successfully added to cart! <a href="http://webshop.local/cart/" onclick="cartLink()" title="cart" class="notification-cart-link" id="view-cart">View cart</a></span></p>

Я нашел обходной путь, просто создав функцию jQuery со ссылкой на страницу корзины, затем добавив ее в HTML как onclick, но для этого мне нужно ввести точный URL-адрес в функции, который может вызвать проблемы, если ссылка когда-либо будет изменения.

// Add to cart link
function cartLink() {
    var url = 'http://webshop.local/cart/';
    window.location = url;
}

Есть ли способ игнорировать или обойти метод предотвращение ошибок с помощью функции onclick?

1 Ответ

0 голосов
/ 05 сентября 2018

Просто прочитайте URL по ссылке, по которой щелкаете (элемент, который вызывает событие, доступен как e.target в вашем слушателе):

var link = document.getElementById('view-cart');

// let's assume some Javascript has added a listener which does preventDefault()
// so now clicking it does nothing (the following 3 lines simulate that)
link.addEventListener('click', (e) => {
  e.preventDefault()
})

// now let's console.log the href of the link on click
link.addEventListener('click', function(e) {
  console.log(e.target.href);
  // you wanna do this here:
  // window.location.href = e.target.href
})
<p id="addToCartMessage"><span class="text-success">Products successfully added to cart! <a href="http://webshop.local/cart/" title="cart" class="notification-cart-link" id="view-cart">View cart</a></span></p>

Если что-то остается неясным, не стесняйтесь спрашивать в комментариях.

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