如何在javascript中捕获新标签事件中的开放链接?

时间:2017-10-27 10:08:19

标签: javascript jquery

我能够捕获右键单击事件,但我想知道的是如何在新标签中捕获"打开链接"右键单击后发生这种情况

1 个答案:

答案 0 :(得分:0)

我刚遇到同样的问题。这是我提出的工作。 当我在我感兴趣的链接上打开时,我会听到上下文菜单,并且我更改了href值

$(".my-links").contextmenu(function(event){
        // your logic here 
        // for me it was to add the portocal + "://" + hostname + "/#" + value of the original link
        var $link = $(this);
        var href = $link.attr('href');
        // Check if I have already done this
        if(href.includes('/#'))
            return true; // return if it doesn't need editing
        var url = window.location.href;
        url = url.split("/");
        url = url[0]+'//'+url[2];
        $link.attr('href', url + '/#' + href);
    });

现在您可以选择执行某些操作以从此操作中恢复。这完全取决于您的情况以及您要做的事情。对我来说,我需要将href恢复到正常点击的原始值,因为我使用ajax来加载页面,我只需要在" /#"之后的部分。 (这是加载功能需要的,我无法控制更改该功能) 这就是我所做的。

$(".my-links").click(function(event){
        // your logic goes here
        // for me it was to remove portocal + "://" + hostname + "/#" (if they exist)
        event.preventDefault();
        var $link = $(this);
        var href = $link.attr('href');
        if(!href.includes("/#"))
            return ajaxLoad(href); // the function used to load the page with ajax
        var url = href.split("/#");
        ajaxLoad(url[url.length-1]); // the function used to load the page with ajax
    });

这些行应该适用于你。

  1. 收听contextmenu事件,并按照你的逻辑行事。

  2. 如果您需要恢复更改,请找出最合适的事件,以便在发生更改时恢复并执行恢复过程。