Javascript 使用onclick函数忽略防止默认值

Javascript 使用onclick函数忽略防止默认值,javascript,wordpress,woocommerce,Javascript,Wordpress,Woocommerce,在向购物车添加产品后,我在Woocommerce消息中添加了一个自定义的“查看购物车”链接。该链接显示正确的URL,但单击时不执行任何操作。考虑到这种情况,我将假设这是由于prevent.default方法造成的,但我不确定 该链接位于php字符串中,并调用一个包含正确购物车URL的变量: sprintf( __('Products successfully added to cart! <a href="%s" onclick="cartLink()" title="cart" clas

在向购物车添加产品后,我在Woocommerce消息中添加了一个自定义的“查看购物车”链接。该链接显示正确的URL,但单击时不执行任何操作。考虑到这种情况,我将假设这是由于prevent.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 );

有没有一种方法可以忽略或绕过带有onclick函数的prevent.default方法?

只需从正在单击的链接中读取URL(触发事件的元素在侦听器中可用为
e.target
):

var link=document.getElementById('view-cart');
//假设某个Javascript添加了一个监听器,该监听器不支持preventDefault()
//所以现在单击它什么也不做(下面3行模拟了这一点)
link.addEventListener('click',(e)=>{
e、 预防默认值()
})
//现在,让我们在单击时记录链接的href
link.addEventListener('click',函数(e){
console.log(e.target.href);
//你想在这里这样做:
//window.location.href=e.target.href
})

产品已成功添加到购物车

preventDefault()
不是一个事件,而是一个事件处理函数中可用的方法。@connexo啊,好吧,我的错误,还在学习,我将编辑这个问题;-)请在浏览器中显示元素的HTML。添加的HTML与浏览器中显示的HTML完全相同。这可能是我正在寻找的内容,但我在代码中很难做到这一点。我抄了你的答案,做了一些必要的修改。继续获取ID的引用错误。我是否需要添加一个单独的按钮才能工作,或者我可以只使用一个链接吗?将示例调整为您添加到问题中的HTML。我仍然不确定你那边发生了什么。我知道你有一个完全工作的
标签,当点击时,一些JS会在标签上执行
preventDefault()
。这意味着完整的
href
已经存在,您只需点击链接即可正常打开
href
?谢谢,是的,这是正确的。我看不出
标记有任何问题。当鼠标悬停时,它会显示正确的链接,当在Chrome inspector中单击此链接时,页面将打开。控制台中也不存在错误。只是当我点击链接时,什么也没发生,这就是为什么我怀疑
preventDefault()
。我希望禁用此“rogue”
preventDefault()
或任何阻止此特定链接正常运行的功能。好吧,我已为您提供了“恢复”链接自然行为所需的一切。是的,您做到了,现在我已使其正常工作,因此感谢您的帮助!
<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>
// Add to cart link
function cartLink() {
    var url = 'http://webshop.local/cart/';
    window.location = url;
}