Javascript 在链接上单击(Ctrl+;单击)而不更改href详细信息时,停止打开新选项卡

Javascript 在链接上单击(Ctrl+;单击)而不更改href详细信息时,停止打开新选项卡,javascript,jquery,html,clicking,Javascript,Jquery,Html,Clicking,我想在使用javascript(jQuery)单击链接时停止打开新选项卡。我找到了这个密码 <html> <head> <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script> </head> <body> <h3>CTRL+CLICK is

我想在使用javascript(jQuery)单击链接时停止打开新选项卡。我找到了这个密码

 <html>
<head>
  <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
</head>
<body>

<h3>CTRL+CLICK is disabled </h3>
<a href="https://www.google.co.in">Google</a>
<a href="https://www.yahoo.com">Yahoo</a>

<script>
$(document).ready(function()
{
    $('a').each(function() {
        var href= $(this).attr('href');
        $(this).attr('href','javascript:void(0);');
        $(this).attr('jshref',href);
    });
    $('a').bind('click', function(e) 
    {
        e.stopImmediatePropagation();           
        e.preventDefault();
        e.stopPropagation();
        var href= $(this).attr('jshref');
        if ( !e.metaKey && e.ctrlKey )
            e.metaKey = e.ctrlKey;
        if(!e.metaKey)
        {
            location.href= href;
        }
        return false;
})

});
</script>

</body>
</html>

按住CTRL键并单击将被禁用
$(文档).ready(函数()
{
$('a')。每个(函数(){
var href=$(this.attr('href');
$(this.attr('href','javascript:void(0);');
$(this.attr('jshref',href);
});
$('a').bind('click',函数(e)
{
e、 停止即时复制();
e、 预防默认值();
e、 停止传播();
var href=$(this.attr('jshref');
if(!e.metaKey&&e.ctrlKey)
e、 metaKey=e.ctrlKey;
如果(!e.metaKey)
{
location.href=href;
}
返回false;
})
});

此代码将
href
详细信息更改为
jshref
。但就我而言,我无法改变细节。我该怎么办?

你差一点就成功了,改变这个

$('a').bind('click', function(e) 
{
    e.stopImmediatePropagation();           
    e.preventDefault();
    e.stopPropagation();
    var href= $(this).attr('jshref');
    if ( !e.metaKey && e.ctrlKey )
        e.metaKey = e.ctrlKey;
    if(!e.metaKey)
    {
        location.href= href;
    }
    return false;
});
对此

$('a').bind('click', function(e) 
{
    e.preventDefault();
    var href= $(this).attr('jshref');
    if ( !e.metaKey && e.ctrlKey )
        e.metaKey = e.ctrlKey;
    else
        location.href= href;
}
这是


编辑:我更新了JSFIDLE,我刚刚添加了
e.preventDefault()
并删除了
$(this.attr('href','javascript:void(0);')
当用户鼠标悬停在上面看不到javascript:void()


你到底想干什么?看起来你的问题让人困惑。@PraveenKumar:对不起,我的表情不好。作为标题,我想在单击链接(Ctrl+单击)时停止打开新选项卡。上面的代码可以做到这一点,但其他问题发生,所以我不能使用它。你能告诉我其他方法吗?还有什么问题?ctrl+click是浏览器的功能,你不应该阻止它。在你的情况下,href detail更改为“javascript:void(0);”。你能不改变上面的细节吗?谢谢。当我按住Ctrl键并单击时,仍然会打开一个新窗口。@DoThanhTung不适合我,您使用的浏览器是什么?对不起,chrome可以,但我使用IE11。你能用IE11测试吗?谢谢。@DoThanhTung绑定很奇怪,它甚至没有触发,我现在帮不了你,我回家后可以试试,只有密码答案是无效的。
$(document).ready(function()
{
    $('a').bind('click', function(e) {
    var href= $(this).attr('href');
    $(this).attr('href','javascript:void(0);');
    $(this).attr('jshref',href);
    var href= $(this).attr('jshref');
    if ( !e.metaKey && e.ctrlKey )
        e.metaKey = e.ctrlKey;
    if(!e.metaKey)
    {
        location.href= href;
    }
    $(this).attr('href',href);
    return false;
});
});
  $('#a').bind('click', function(e) {      
        e.preventDefault(); // Stop right click on link
        return false;     
    });
    var control = false;
    $(document).on("keyup keydown", function(e) {
        control = e.ctrlKey;
    });
    $("a").on("click", function(e) {
        var href= $(this).attr('href');     
        if (control && href=='javascript:;' || href == 'javascript:void(0);' || href == 'javascript:void();' || href == '#') {
            return false; // Stop ctrl + click on link
        }else {
            window.open(href, '_blank'); 
        } 
    });