UNPKG

1.64 kBJavaScriptView Raw
1import "./script";
2import "./style.scss";
3
4/**
5 * Geetest drag detection
6 *
7 * @param data.gt
8 * @param data.challenge
9 * @param data.success
10 * @return { geetest_challenge, geetest_validate, geetest_seccode }
11 *
12 * 需要提供一个DOM节点 <div id="popup-captcha"></div>
13 */
14export default function showGeetest(data) {
15 return new Promise(resolve => {
16 const params = {
17 gt: data.gt,
18 challenge: data.challenge,
19 product: "popup",
20 offline: !data.success
21 };
22 window.initGeetest(params, function(captchaObj) {
23 var container = document.getElementById("popup-captcha");
24 if (!container) {
25 container = document.createElement("div");
26 container.id = "popup-captcha";
27 document.body.appendChild(container);
28 }
29 container.style.display = "block";
30 captchaObj.appendTo("#popup-captcha");
31 captchaObj.onReady(captchaObj.show);
32 if (container.style.display === "none") {
33 container.style.display = "block";
34 }
35
36 captchaObj.onSuccess(function() {
37 container.style.display = "none";
38 const successElement = container.querySelector(
39 ".geetest_ghost_success"
40 );
41 if (successElement) {
42 successElement.style.display = "none";
43 }
44 var validate = captchaObj.getValidate();
45 const geetOption = {
46 geetest_challenge: validate.geetest_challenge,
47 geetest_validate: validate.geetest_validate,
48 geetest_seccode: validate.geetest_seccode
49 };
50 resolve(geetOption);
51 });
52 });
53 });
54}