鍍金池/ 問(wèn)答/HTML/ js 注入問(wèn)題,來(lái)個(gè)大牛

js 注入問(wèn)題,來(lái)個(gè)大牛

1.需求,js 注入,別的平臺(tái)到我們這里推廣,從我們平臺(tái)鏈接過(guò)去注冊(cè)的用戶我們就能獲利,所以我要在用戶點(diǎn)擊點(diǎn)擊注冊(cè)的時(shí)候,在他們頁(yè)面的js里加入我們自己的js,但是只能加到結(jié)尾;
2.問(wèn)題:當(dāng)點(diǎn)擊事件的時(shí)候,我獲取表單的信息,并把數(shù)據(jù)通過(guò)ajax傳入到自己的數(shù)據(jù)庫(kù),但是js是單線程的,他們的點(diǎn)擊事件觸發(fā)之后,就跳轉(zhuǎn)鏈接了,我們注入的js 就不會(huì)生效;
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) {
      }
    });
  }
})

/**
 * 驗(yàn)證
 */
function checkpage() {
  let telValue = $(".phone").val();
  let passValue = $(".password").val();
  let codeInput1 = $(".verification").val();
  let smsCode = $.trim(codeInput1);
  if (!telValue) {
    showPoint('請(qǐng)輸入手機(jī)號(hào)');
    return;
  }
  if (!passValue) {
        showPoint('請(qǐng)輸入密碼');
        return;
    }
    var checkTel = checkPhone(telValue);
    if (!checkTel) {
        return;
    }
    var checkPass = checkWord(passValue);
    if (!checkPass) {
        return;
    }
    if (!smsCode) {
        showPoint('請(qǐng)輸入驗(yàn)證碼');
        return;
    }
    var regFirm;
    if ($(".choose").is(':checked') == true) {
        regFirm = 1;
    } else {
        regFirm = 0;
        showPoint("請(qǐng)選擇協(xié)議");
        return;
    }
}
回答
編輯回答
笨小蛋

你用js獲取一下點(diǎn)擊事件,然后重寫他,或者讓他失效吧
jquery移除、綁定、觸發(fā)元素事件使用示例詳解

2017年10月9日 23:49
編輯回答
萌二代

你觸發(fā)的是一個(gè)異步的方法,因此你不能讓他真的點(diǎn)到原來(lái)的元素。
你可以添加個(gè)看不到的遮罩,或者把原來(lái)的dom隱藏替換一個(gè)你的dom上去,總之就是不讓原來(lái)的dom觸發(fā),等待你回調(diào)后自己觸發(fā)原來(lái)dom的事件。

2018年7月28日 17:10
編輯回答
下墜

方法有很多,這里舉個(gè)例子參考下。

障眼法

克隆原來(lái)的按鈕,并替換它。

示例代碼

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

        <!-- 官方的 js 代碼 -->
        <script>
            $(".btn_next").click(function() {
                alert("原來(lái)的代碼");
            })
        </script>

        <!-- 注入的 js 代碼 -->
        <script>
            // 克隆按鈕
            $(".btn_next").parent().prepend('<input class="btn_next_clone" type="button" value="立即申請(qǐng)" />');
            // 隱藏原來(lái)的按鈕
            $(".btn_next").css("display", "none");
            $(".btn_next_clone").click(function() {
                alert("注入的代碼");
                $(".btn_next").click();
            });
        </script>
    </body>
</html>
2018年6月27日 03:08