【问题标题】:How to disable the option: Open in new tab [duplicate]如何禁用该选项:在新选项卡中打开 [重复]
【发布时间】:2014-10-13 18:49:23
【问题描述】:

如何禁用该选项:在新标签中打开

我负责异步加载内容的代码如下:

jQuery:

$(document).ready(function()
{
    init();
    $(window).resize(init);

    $('#floatMenu,#smallMenu').find('>a').click(function()
    {
        var t = this;
        $('#wynik').animate({opacity:0}, 'fast', function()
        {
            $(this).load(t.href, function()
            {
                $(this).animate({opacity:1}, 'fast');
            })
        });

        //$('#wynik').load(this.href);

        $(this).addClass('active').siblings().removeClass('active');

    }).first().click();
});

HTML:

<div class="container">
    <div class="row">
        <div class="col-md-12">
            <div class="list-group" id="smallMenu">
                <a href="text/bc/5" onclick="return false;" class="list-group-item active">TEXT</a>
                <a href="text/bc/1" onclick="return false;" class="list-group-item">TEXT</a>
                <a href="text/bc/2" onclick="return false;" class="list-group-item">TEXT</a>
                <a href="text/bc/3" onclick="return false;" class="list-group-item">TEXT</a>
                <a href="text/bc/4" onclick="return false;" class="list-group-item">TEXT</a>
            </div>
        </div>
    </div>

    <div class="row">
        <div class="col-md-3" id="menu-padding-top">
            <div class="list-group" id="floatMenu">
                <a href="text/bc/5" onclick="return false;" class="list-group-item active">TEXT</a>
                <a href="text/bc/1" onclick="return false;" class="list-group-item">TEXT</a>
                <a href="text/bc/2" onclick="return false;" class="list-group-item">TEXT</a>
                <a href="text/bc/3" onclick="return false;" class="list-group-item">TEXT</a>
                <a href="text/bc/4" onclick="return false;" class="list-group-item">TEXT</a>
            </div>
        </div>

        <div class="col-md-9">
            <div id="wynik">
                {* Here is content loading. *}
            </div>
        </div>                   
    </div>
</div>

我尝试交换到(jQuery 代码以及)和 href 到 data-href - 不起作用。

【问题讨论】:

  • 添加preventDefault():$('#floatMenu,#smallMenu').find('&gt;a').click(function(event){ event.preventDefault(); /* your code */ })
  • 作为用户,我讨厌禁止“在新标签页中打开”功能的网站,因为我主要使用它。
  • 你为什么要实现这个目标?

标签: javascript jquery html browser


【解决方案1】:

...尝试在.click() 处理程序中添加preventDefault()。如果没有它,当您单击链接时,浏览器会导航到指向 href 属性的页面。

添加这一行:

e.preventDefault();

在您的代码中:

$(document).ready(function()
{
    init();
    $(window).resize(init);

    $('#floatMenu,#smallMenu').find('>a').click(function(e)
    {
        e.preventDefault(); //ADD HERE
        var t = this;
        $('#wynik').animate({opacity:0}, 'fast', function()
        {
            $(this).load(t.href, function()
            {
                $(this).animate({opacity:1}, 'fast');
            })
        });

        //$('#wynik').load(this.href);

        $(this).addClass('active').siblings().removeClass('active');

    }).first().click();
});

现在您阻止了新页面的加载。并且 javascript 执行您的处理程序,而不会将您重定向到新页面。

AN EXAMPLE...

【讨论】:

  • 有趣的是,在您的示例中,“正常”链接在长按时不起作用,而“preventDefault”链接在长按时正常工作,项目为“在新选项卡中打开”。
【解决方案2】:

只需在处理程序的第一行添加event.preventDefeult() 函数,如下所示:

$('#floatMenu,#smallMenu').find('>a').click(function(event)
{
    event.preventDefault();

    var t = this;
    $('#wynik').animate({opacity:0}, 'fast', function()
    {
        $(this).load(t.href, function()
        {
            $(this).animate({opacity:1}, 'fast');
        })
    });

    //$('#wynik').load(this.href);

    $(this).addClass('active').siblings().removeClass('active');

}).first().click();

【讨论】:

  • 你有一个可行的例子吗?
猜你喜欢
  • 2014-11-03
  • 2012-05-03
  • 2019-12-01
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 2012-04-25
  • 2022-01-15
  • 2014-10-06
相关资源
最近更新 更多