更改右键单击“复制链接”值

时间:2016-10-03 14:23:19

标签: javascript jquery

我目前正在联盟网站上工作。我在jQuery中制作了一个脚本,在悬停时显示销售页面(没有会员链接),但是当你点击它时,它会将我的会员链接添加到链接的开头。然后我的网络将它们重定向到所需的页面。

编辑:澄清一下,我想说我正在谈论将鼠标悬停在链接上

现在,如果右键单击它,将打开一个菜单,您可以单击“复制链接”。这将复制“xxx”:

<a href="xxx">Example</a>

哪个没有我的会员链接。如何使“复制链接”按钮复制另一个链接而不是标签中的href?它甚至可能吗?

现在我通过在代码的开头部分完全避免它:

.on("click contextmenu", function(){};

为了给你一个当前代码的例子,它通过监听具有特定类的标签的点击来工作,然后检查a标签中的href是否包含一些文本,如果它包含该文本,它会这样做:

window.location.href = affiliatelink + link;

如果没有,则执行此操作(如果我没有该产品的会员链接):

window.location.href = link;

那么,我的问题是否可以解决 - 或者我必须这样做,就像我正在做的那样?

编辑2:我必须提供我的代码

$(document).ready(function(){

$(".class").on("click contextmenu", function(){
    var link = this.href;
    var partner = "https://affiliatelink.com/?url=";

    if(link.indexOf("partnername") != -1){
        window.location.href = partner + link;
    } else {
        window.location.href = link;
    }

});});

1 个答案:

答案 0 :(得分:1)

假设我正确理解了您的问题,如果您在将关联代码附加到链接时进行更改,则可能会解决问题。

“复制链接地址”上下文菜单快捷方式将复制链接标记的href属性中的任何内容。那么,如果您将该属性的值设置为您的会员链接+原始链接的文本,该怎么办?您不再需要在单击处理程序中执行此操作;它会“正常工作”并支持这两种情况。

这样的事情可能会起到作用:

var links = [].slice.call(document.querySelector('.your-class'));
links.forEach(function(link){
    link.href = affiliateLink + link.href;
});

您不再需要点击处理程序,它支持与链接交互的两种情况。

编辑:更新了您的代码示例。

$(document).ready(function(){

$(".class").each(function(){
    var link = this.href;
    var partner = "https://affiliatelink.com/?url=";

    if(link.indexOf("partnername") != -1){
        this.href = partner + link;
    }    
});});