javascript:协议很糟糕,但最容易获得的替代方案是什么?

M M*_*ler 1 javascript events accessibility

所以我猜这是非常一致的使用href="javascript:fn_name();"是不好的做法.但是,假设我有一个链接:<a href="#" class="exec-fn">Click me</a>.

我可以用

$('.exec-fn').click(fn_name);
Run Code Online (Sandbox Code Playgroud)

但这不是很容易理解.由于这是一个点击事件,这不适用于点击或可能标记链接并按Enter键跟随它.我有点想模仿浏览器关注和跟踪链接的能力,因为它的默认行为允许它,但我知道javascript:不建议使用协议,我也不总是想要命名一个全局可访问的函数.

有更好的方法吗?

Leo*_*nid 6

有相应的建议:http:
//www.w3.org/TR/DOM-Level-3-Events/#click-synthesis

如果激活触发器的实例不是事件类型单击的事件(也就是说,当它不是由用户使用鼠标或等效指针设备激活按钮或链接时),则实现必须合成并分派事件事件类型单击作为该激活触发器的默认操作之一.Event.target的值必须设置为事件目标(通常是当前聚焦的元素),并且事件必须模拟左键单击(即,MouseEvent.button属性值必须为0,并且MouseEvent.buttons属性值必须是1).这样的模拟点击事件的其他方面的信息是依赖于实现,但对于历史的目的,为Click事件的接口必须的MouseEvent接口,无论用来激活元素的实际设备.防止激活触发器的默认操作,例如使用Event.preventDefault(),必须停止激活行为的启动.

一个例子:

当用户使用键盘,如通过集中的超级链接元素并按下"Enter"键或""键激活超链接,点击事件,调度此相应的keydown事件的默认操作.

基本上,点击事件是一种方法.