如何在不调用onclick的情况下打开新窗口上的链接

时间:2015-12-15 05:43:46

标签: javascript html hyperlink tabs

我的HTML代码如下:

 <a href="#" onclick="reloadPage()">Text</a>

当用户点击链接上的“鼠标左键”时,应调用reloadPage()。

但是当用户点击链接上的“Ctrl + click”或“中间按钮”时,我想打开一个没有reloadPage()的新窗口。

我该怎么做?

4 个答案:

答案 0 :(得分:1)

您可以参考here。它是我的代码

<a href="#" id="test" onclick="reloadPage(event)">Click Me</a>

<script>
$(document).ready(function() {

$(document).keydown(function(event){
    if(event.which==17)
        cntrlIsPressed = true;
});

$(document).keyup(function(){
    cntrlIsPressed = false;
});
});
var cntrlIsPressed = false;


function reloadPage(mouseButton,event)
{
        //event.preventDefault();
    if( event.which == 2 ) {
        //todo something
      //window.open($("#test").attr("href"));
      alert("middle button"); 
      return false;
    }
    if(cntrlIsPressed)
    {
         //window.open($("#test").attr("href"));
        // ctrl + click 
        return false;
    }
    //todo something
    window.location.href = $("#test").attr("href");
    return true;
}
</script>

答案 1 :(得分:0)

您只需将href标记上的a属性设置为当前页面网址,这样当用户点击它时会打开同一页面(重新加载),如果他中间点击它将会在新标签页中打开同一页面。

如果您想在多个页面上使用它,那么您可以将javascript中的href设置为当前页面网址

document.getElementById('myId').href = location.href

答案 2 :(得分:0)

您可以尝试这种方法(html):

<a href="#" id="mylink">Text</a>

使用Javascript:

$(function () {
        $("#mylink").click(function (event) {
            if ((event.button == 0 && event.ctrlKey) || event.button == 1) {
                event.preventDefault();
                window.open("http://www.google.com");
            }
            else
                if (event.button == 0)
                    window.location.reload();                                
        });
});

答案 3 :(得分:0)

我有两个选项。纯JavaScript和使用jquery。

这是完整的代码。

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {

        $('#jqueryStyle').mousedown(function(e){
            //3 is right click
            if(e.which == 3){
               window.open("http://www.w3schools.com");
            //1 is for click
            }else if(e.which == 1){
                reloadPage();
            }
        });
    });

    function reloadPage(){
       location.reload();
    }

    function onMouseDown(e,obj){
        e = e || window.event;
        //3 is for right click
        if(e.which == 3){
            window.open("http://www.w3schools.com");
        //1 is for click
        }else if(e.which == 1){
            reloadPage();
        }
    }
    </script>
</head>
<body>

     <a href="#" id="jqueryStyle">JQuery Code</a ><br/>
     <a href="#" onmousedown="onMouseDown(event,this)">Pure Javascript Code</a >
</body>
</html>

希望有所帮助。