js 注入问题,来个大牛

1.需求,js 注入,别的平台到我们这里推广,从我们平台链接过去注册的用户我们就能获利,所以我要在用户点击点击注册的时候,在他们页面的js里加入我们自己的js,但是只能加到结尾;
2.问题:当点击事件的时候,我获取表单的信息,并把数据通过ajax传入到自己的数据库,但是js是单线程的,他们的点击事件触发之后,就跳转链接了,我们注入的js 就不会生效;
3.需要注入的地址:https://promotion.crfchina.co...
4.自己的注入代码

let TYPE = 1;
let APPID = 1000000;
let token = document.getElementsByTagName("body")[0].getAttribute("datetoken");
let channelName = document.title;
let applyUserName = 0;
let applyIdCard = 0;


/**
 * 提交信息
 */
$('.btn_next').click(() => {

  var applyUserMobile = $('.phone').val();
  console.log(applyUserMobile)
  if (checkpage()) {
    console.log(2)
    $.ajax({
      async: false,
      type: "GET",
      dataType: 'json',
      url: 'URL',
      beforeSend: function (request) {
        request.setRequestHeader("appId", APPID);
        request.setRequestHeader("token", 'token');
      },
      data: '',
      timeout: 3000,
      success: function (msg) {
      },
      error: function (e) {
      }
    });
  }
})

/**
 * 验证
 */
function checkpage() {
  let telValue = $(".phone").val();
  let passValue = $(".password").val();
  let codeInput1 = $(".verification").val();
  let smsCode = $.trim(codeInput1);
  if (!telValue) {
    showPoint('请输入手机号');
    return;
  }
  if (!passValue) {
        showPoint('请输入密码');
        return;
    }
    var checkTel = checkPhone(telValue);
    if (!checkTel) {
        return;
    }
    var checkPass = checkWord(passValue);
    if (!checkPass) {
        return;
    }
    if (!smsCode) {
        showPoint('请输入验证码');
        return;
    }
    var regFirm;
    if ($(".choose").is(':checked') == true) {
        regFirm = 1;
    } else {
        regFirm = 0;
        showPoint("请选择协议");
        return;
    }
}
阅读 3.8k
3 个回答

你触发的是一个异步的方法,因此你不能让他真的点到原来的元素。
你可以添加个看不到的遮罩,或者把原来的dom隐藏替换一个你的dom上去,总之就是不让原来的dom触发,等待你回调后自己触发原来dom的事件。

方法有很多,这里举个例子参考下。

障眼法

克隆原来的按钮,并替换它。

示例代码

<html>
    <head></head>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <body>
        <input class="btn_next" type="button" value="立即申请" />

        <!-- 官方的 js 代码 -->
        <script>
            $(".btn_next").click(function() {
                alert("原来的代码");
            })
        </script>

        <!-- 注入的 js 代码 -->
        <script>
            // 克隆按钮
            $(".btn_next").parent().prepend('<input class="btn_next_clone" type="button" value="立即申请" />');
            // 隐藏原来的按钮
            $(".btn_next").css("display", "none");
            $(".btn_next_clone").click(function() {
                alert("注入的代码");
                $(".btn_next").click();
            });
        </script>
    </body>
</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题