如何通过中单击可以打开一个可打开的JavaScript链接



我的网页可与大量由用户上传的数据一起使用,由服务器处理,然后返回。有时,用户需要过滤部分数据,因此服务器仅处理该数据的一个子集。因此,我的网页具有一个不错的"过滤器"按钮,该按钮按照客户端的状态过滤。

长话短说:我的客户希望能够中点击该按钮,以便在新标签中打开。(有些实际上使用右键单击 ->"在新标签中打开",因此也必须支持)

我是让用户决定如何打开其链接的忠实信徒,因此我不希望此过滤器按钮自动打开新窗口。但是我不能将其转换为[href]链接,因为我需要先运行JS过滤器。

所以问题变成了,如何在打开之前建立一个运行一些代码的链接?

编辑:使用鼠标点击事件的下面的解决方案对于使用右键单击 在新选项卡中打开的用户将失败,这在我的用户中很常见(事实证明)。我已经相应地更新了这个问题。

使用按钮,捕获单击事件,您可以在其中放置过滤器逻辑,然后打开新选项卡。您始终可以使用CSS使其看起来像按钮或链接样式。

您可以在如何使用鼠标中间单击中看到这一点。

您可以尝试以下方法:

$("button").on('mousedown', function(e) {
 if(e.which == 1) {
   //Left button clicked
 }else if(e.which == 2) {
   //Middle button clicked
 } else if(e.which == 3) {
   //Right button clicked
 }
});

您可以使用简单的onclick,然后在JavaScript中使用event.button查看单击哪个鼠标按钮。这返回代表鼠标按钮的整数值。0是标准(通常为左)单击,1用于中间鼠标按钮(您想要什么),右键为2。这也允许重新配置指向设备,因此它将使用设置的任何密钥作为中间鼠标按钮,而不是在使用物理中间按钮时触发。

您可以在https://developer.mozilla.org/en/dom/event.button

上阅读有关event.button的更多信息。

编辑:

可能还值得使用event.preventDefault()方法,因此它不会在新标签中打开链接(例如)。但是,如果您使用此功能,则必须手动打开链接。

您可以使用JavaScript使用以下想法。

html:

<a href="javascript:void(0);" onclick="clickMe();">Click Me</a>

JavaScript:

function clickMe() {
   //Do here whatsever you want
   var test = "test";
   alert(test);
   var link = "mylink/whatsever-query-string";
   /// Use this if you want open link in self window
   // window.location.href = "mylink/whatsever-query-string"; 
   /// Use this if you want open link in new window
   window.open(link, "", 'width=500, height=600, toolbar=no,location=no, resizable=yes,scrollbars=yes, directories=no,status=no, titlebar=no');
   /// Use this if you want open link in new tab
   //  window.open(link, '_blank'); 
 }

演示小提琴

编辑:对于鼠标中,单击您可以使用以下类似的内容,

html

<div onmousedown="WhichButton(event)">ClickMouse</div>

javascript

 function WhichButton(event) {
   var x = event.buttons;
   if (x == 4) {
     var test = "test";
     alert(test);
     window.open('', '_blank');
   }
 }

demo

对于经过此处的任何人,我确实找到了解决方案:我保留了浏览器本地存储中所需的所有过滤数据。当用户打开链接时,它将他重定向到一个页面,该页面知道要查看本地存储并在存储的数据上运行逻辑,然后再次将他重定向到正确的位置。

这不是理想的:如果用户试图通过直接从A HREF复制链接来共享链接,则该链接在另一个用户的计算机上无法使用(尽管我可以在这种情况下显示警告)。但是,如果用户单击链接,然后共享新的打开链接,则它将起作用,因此我将此解决方案标记为"足够好"。

最新更新