2016-12-03 71 views
1

我的网页使用了大量由用户上传,由服务器处理并返回的数据。有时,用户需要过滤部分数据,以便服务器只处理该数据的一部分。所以我的网页有一个很好的“过滤器”按钮,根据客户端的状态进行过滤。如何通过中键点击打开JavaScript链接?

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

我是letting the user deciding how to open their links的大信徒,所以我不希望这个过滤器按钮打开新窗口自动。但是我不能把它变成[href]链接,因为我需要首先运行JS过滤器。

所以问题就变成了,我怎么能在打开之前创建一个运行代码的链接呢?

编辑:低于该用鼠标点击事件的解决方案将失败谁使用右键+在新标签中打开,这是(原来)我的用户中相当普遍的用户。我已经更新了相应的问题。

+0

我不知道你是否可以结合一个普通的''与'onclick'听众... – qxz

+0

尝试mousedown ... – YOU

+0

@YOU不能'mousedown'触发如果用户拖走并不实际点击?即使用户点击了,它也不会提前开火吗? – qxz

回答

0

对于任何人路过这里,我没有找到解决办法:我一直都是我所需要的过滤后的数据浏览器的本地存储。当用户打开链接时,它将他重定向到一个页面,该页面知道查看本地存储并在存储的数据上运行逻辑,然后再将其重定向到正确的位置。

这并不理想:如果用户试图通过直接从href复制链接来共享链接,它将无法在另一个用户的计算机上工作(尽管我可以在这种情况下显示警告)。然而,如果用户点击链接,然后共享新打开的链接,它会起作用,所以我将此解决方案标记为“足够好”。

0

您可以使用一个简单的onclick,然后在JavaScript利用event.button看到被点击的鼠标按钮。这将返回一个表示鼠标按钮的整数值。 0是标准(通常是左)点击,1为鼠标中键(你想要的),2为右键。这还允许重新配置指点设备,因此它将使用任何已设置的键作为鼠标中键,而不是在使用物理中键鼠标时触发。

你可以阅读更多的event.buttonhttps://developer.mozilla.org/En/DOM/Event.button

编辑:

这可能是值得使用event.preventDefault()方法一样,所以它不会打开新的标签页的链接(例如)。但是,如果你使用这个,你将不得不手动打开链接。

+0

然而,对于右键单击并选择“在新标签中打开”的用户,这将会失败...... – Gilthans

+0

@Gilthans我认为,如果要设置它,以便在事件之后运行event.preventDefault()' .button'检查(所以在'if'语句中),那么它将工作 –

0

使用一个按钮,捕捉单击事件中,你可以把你的过滤逻辑然后打开新的标签页。你总是可以使用CSS来使它看起来像按钮或链接样式。

你可以看到如何使用鼠标中键单击this

0

你可以试试这个:

$("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 
} 
}); 
0

您可以使用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'); 
} 

DEMO Fiddle

编辑:对于鼠标中键点击就可以使用类似下面,

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

相关问题