如何使用javascript将url参数附加到所有传出请求?

时间:2019-02-05 11:24:49

标签: javascript jquery

背景

我有客户到达我的目标网页,我想将诸如aff_id=X之类的网址参数附加到所有传出流量中。

当前,我有这样的东西:

$('a').each(function(i, node) {
  if (node.href != '#') {
    $(node).addClass('outgoing');
  }
});

$('.outgoing').attr('href', function(i, h) {
    if (h) {
        var arg_str = 's4=' + aff_id + '&s5=' + uuid;
        return h + (h.indexOf('?') != -1 ? "&" + arg_str : "?" + arg_str);
    }
});

此问题是,它不适用于所有外发请求,例如表单提交。

  1. 是否可以通过javascript附加侦听器以将url参数附加到所有传出流量?
  2. 是否有更干净的方法将url参数附加到目标网页上的传出流量上?

1 个答案:

答案 0 :(得分:0)

假设您使用的是jQuery:

var uuid = '',
    aff_id = '';
$('a, form').each(function() {
    var self = $(this);
    var qstr = 's4=' + aff_id + '&s5=' + uuid;
    if ('a' === self.get(0).tagName.toLowerCase()) {
        var href = self.attr('href') || '';
        if (!href.match(/^#/)) {
            self.attr('href', href + (href.indexOf('?') > -1 ? '?' : '&') + qstr);
        }
    } else {
        var action = self.attr('action') || '';
        if (!action.match(/^#/)) {
            self.attr('action', action + (action.indexOf('?') > -1 ? '?' : '&') + qstr);
        }
    }
});

可以用作简单的快速修复程序。