从源自标签的onclick属性的自定义函数中调用preventdefault的访问事件

Access event to call preventdefault from custom function originating from onclick attribute of tag

本文关键字:调用 preventdefault 事件 访问 自定义函数 属性 标签 onclick      更新时间:2023-09-26

我有这样的链接:

<a href="#" onclick="myfunc({a:1, b:'hi'})" />click</a>
<a href="#" onclick="myfunc({a:3, b:'jo'})" />click</a>

我想在myfunc()里面做一个preventDefault(),因为点击链接时地址栏会添加一个#(不做return false;href='javascript:void(0);')

这可能吗?我可以得到事件在myfunc()

我相信你可以将event传递到内联函数中,这将是W3C兼容浏览器中引发事件的event对象(即旧版本的IE仍然需要在事件处理程序函数中进行检测以查看window.event)。

一个简单的例子

function sayHi(e) {
   e.preventDefault();
   alert("hi");
}
<a href="http://google.co.uk" onclick="sayHi(event);">Click to say Hi</a>

  1. 按原样运行,并注意到该链接在警报后没有重定向到Google。
  2. 然后,将传递给onclick处理程序的event更改为e之类的其他内容,单击run,然后注意到重定向确实发生在警报之后(结果窗格变为白色,显示重定向)。

最简单的解决方法就是:

<a href="#" onclick="event.preventDefault(); myfunc({a:1, b:'hi'});" />click</a>

对于不支持JS的浏览器,这实际上是一种很好的缓存破坏方式(如果没有JS,则没有缓存破坏)

<a onclick="
if(event.preventDefault) event.preventDefault(); else event.returnValue = false;
window.location = 'http://www.domain.com/docs/thingy.pdf?cachebuster=' + 
Math.round(new Date().getTime() / 1000);" 
href="http://www.domain.com/docs/thingy.pdf">

如果JavaScript是启用的,它打开PDF与缓存破坏查询字符串,如果没有它只是打开PDF。

试试这个:

<script>
    $("a").click(function(event) {
        event.preventDefault(); 
    });
</script>

你不能直接从a标签中删除href属性吗?

<script type="text/javascript">
$('a').click(function(){
   return false;
});
<script>

为链接添加一个唯一的类,并添加一个javascript来防止默认的类链接:

<a href="#" class="prevent-default" 
   onclick="$('.comment .hidden').toggle();">Show comments</a>
<script>
  $(document).ready(function(){
    $("a.prevent-default").click(function(event) {
         event.preventDefault(); 
          });
  });
</script>

我认为当我们使用onClick时,我们想要做一些不同于默认的事情。因此,对于所有带有onClick:

的链接
$("a[onClick]").on("click", function(e) {
  return e.preventDefault();
});

简单!

onclick="blabla(); return false"

您可以像这样从onclick访问事件:

<button onclick="yourFunc(event);">go</button>

和在你的javascript函数,我的建议是添加第一行语句:

function yourFunc(e) {
    e = e ? e : event;
}

则在所有地方使用e作为事件变量

无需任何JS库或jQuery。如果可能的话,打开一个漂亮的弹出窗口。正常链接打开失败

<a href="https://acme.com/" onclick="onclick="openNewWindow(event, this.href);">...</a>

和辅助函数:

function openNewWindow(event, location) {
  if (event.preventDefault && event.stopImmediatePropagation) { 
    event.preventDefault(); 
    event.stopImmediatePropagation(); 
  } else {
    event.returnValue = false; 
  }
  window.open(location, 'targetWindow', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=800,height=450');
}

e.preventDefault();从https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault