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

标签 javascript jquery

我能够捕获右键单击事件,但我想知道的是如何捕获右键单击后发生的“在新选项卡中打开链接”

最佳答案

我刚刚遇到了同样的问题。这是我想出的解决办法。 当上下文菜单在我感兴趣的链接上打开时,我会监听它,并更改 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. 如果您需要恢复更改,请找出最合适的事件来恢复更改(如果已发生)并执行恢复过程。

关于javascript - 如何在javascript中捕获新标签页事件中的打开链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46972566/

相关文章:

javascript - 如何在不使用 eval 的情况下访问定义为字符串的嵌套属性?

java - 前端 - ajax 调用服务器框架

c# - 在default.aspx中调用jquery

javascript - 如何在页面加载前使用 CSS 在响应式 slider 上设置高度

javascript - jQuery 仅在父 li 上隐藏/显示

javascript - 如何在对象创建者之外调用对象属性值

javascript - TR 悬停影响 BROTHER

javascript - 仅执行 1 次的 mocha global `before`

javascript - jsp ul列表元素动态选择

javascript - jQuery 和伪元素