要调用的访问事件阻止来自标记的 onclick 属性的自定义函数的默认值

2022-08-30 04:07:23

我有这样的链接:

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

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

这可能吗?我可以将活动放在里面吗?myfunc()


答案 1

我相信您可以传入内联函数,该函数将成为W3C兼容浏览器中引发的事件的对象(即,旧版本的IE仍然需要在事件处理程序函数内部进行检测才能查看)。eventeventwindow.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. 然后,将传递到处理程序中的 其他内容更改为其他内容,如 “运行”,然后注意重定向确实在警报之后发生(结果窗格变为白色,显示重定向)。eventonclicke

答案 2

最简单的解决方案是:

<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。