JavaScript点击事件

Sim*_*nNN 1 javascript

我的浏览器(firefox)阻止加载任何弹出窗口,并加载在当前选项卡中打开新窗口的链接,除非我明确地说要使用适当的快捷方式(例如,单击中键)将该链接加载到新选项卡或窗口上(在链接上单击或单击鼠标左键ctrl会导致该链接在新标签页上打开,而shift+在新窗口上单击鼠标左键)。

我想创建一个JavaScript函数f(),该函数在按下链接时运行一些代码(旨在创建链接地址),然后加载已创建的链接,而不会消除上述用户体验。现在,我所拥有的类似于<a href="javascript:void(0)" onclick="f()"/>,但是单击鼠标中键不起作用(而是加载url javascript:void(0)),并且上述其他功能也不起作用。

您有解决我问题的想法吗?

谢谢。

Lor*_*eck 5

您是否尝试过window.open('url')?

请参阅:http : //www.javascript-coder.com/window-popup/javascript-window-open.phtml

另外,据我所知,您无法控制浏览器是否在新标签页或新窗口中打开。这是每个用户不同的浏览器设置。

您也可以尝试删除onclick,然后使用 <a href="javascript:f()"></a>

编辑

使用中间点击打开新标签页而不是执行javascript似乎存在问题:中间点击(新标签页)和javascript链接

如该站点所说,您可以为该元素创建一个id并通过javascript进行绑定。

**来自该链接:

<a href="/non/ajax/display/page" id="thisLink">...</a>
Run Code Online (Sandbox Code Playgroud)

然后在您的JS中,通过ID钩住链接以进行AJAX调用。请记住,您需要阻止click事件冒泡。大多数框架都有一个内置的事件杀手,您可以调用它(只需查看其Event类)。

这是jquery中的事件处理和事件杀手:

$("#thisLink").click(function(ev, ob) {
    alert("thisLink was clicked");
    ev.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

没有jQuery,它可能看起来像这样:

document.getElementById('thisLink').onclick = function(e)
{
     //do someting
     e.stopPropagation();
}
Run Code Online (Sandbox Code Playgroud)