中间点击(新标签)和javascript链接

时间:2020-03-06 14:54:50  来源:igfitidea点击:

我负责一个工作中的网站,最近我添加了一些ajaxy请求,以使其速度更快,响应速度更快。但这引起了一个问题。

在我的页面上,左侧有一个索引表,如菜单。单击它后,它将发出一个请求,该请求将填满页面的其余部分。我们随时可以单击索引的另一项来加载其他页面。

在添加JavaScript之前,可以对索引的每个项目进行中键单击(打开新标签),这允许在我处理其中的一个页面时加载其他页面。
但是由于我已将所有链接更改为ajax请求,所以它们现在执行了一些javascript而不是真正的链接。因此,当我单击它们时,它们仅打开空选项卡。

有没有一种方法可以结合这两种功能:左键单击时触发javascript或者中键单击时触发新选项卡?
一定是一些丑陋的javascript才能捕捉到每个点击并相应地对其进行处理吗?

谢谢。

解决方案

可能的是,我每次都可以提供两个链接,其中一个触发javascript,另一个则是一个允许进行中间点击的真实链接。
我想,其中之一必须是图像,以避免索引过载。

它将需要进行一些测试,但是我相信大多数浏览器在单击它们时都不会执行单击处理程序,这意味着仅使用链接。

但是,处理程序函数不需要返回false即可确保正常单击时不使用这些链接。

编辑:
可以使用以下示例:

<a href="/Whatever/Wherever.htm" onclick="handler(); return false;" />

是的。代替:

<a href="javascript:code">...</a>

做这个:

<a href="/non/ajax/display/page" id="thisLink">...</a>

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

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

$("#thisLink").click(function(ev, ob) {
    alert("thisLink was clicked");
    ev.stopPropagation();
});

当然,在处理诸如此类的事情时,我们可以更加聪明,但我认为必须强调的是,此方法比使用onclick属性要干净得多。

该类型的点击不会触发onclick事件,因此我们需要添加一个实际上可以正常工作的href属性。一种实现此目的的方法是在URL中添加一个#bookmark以向目标页面指示所需的状态。

是的,我们需要查找渐进式增强功能和不干扰Java的Javascript,并对站点进行编码以使其在未启用Javascript的情况下工作,然后在基本站点正常工作后添加Javascripts函数。

<a href="/original/url" onclick="return !doSomething();">link text</a>

有关更多信息和详细说明,请在另一篇文章中查看我的答案。