Перенос функции с расширения в БАС

Поддержка
  • Как можно такую функцию заставить работать в бас, так, как она работает в расширении?

    (() => {
    setInterval(function () {
    if (window.___grecaptcha_cfg === undefined) {return;}
    if (___grecaptcha_cfg.clients === undefined) {return;}
    for (let widgetId in ___grecaptcha_cfg.clients) {
    let widget = ___grecaptcha_cfg.clients[widgetId];
    if (isCaptchaWidgetRegistered("recaptcha", widget.id)) {continue;}
    let widgetInfo = getRecaptchaWidgetInfo(widget);
    registerCaptchaWidget(widgetInfo);
    }
    }, 3000);
    let getRecaptchaWidgetInfo = function (widget) {
    let info = {
    captchaType: "recaptcha",
    widgetId: widget.id,
    version: "v2",
    sitekey: null,
    action: null,
    s: null,
    callback: null,
    enterprise: grecaptcha.enterprise ? true : false,
    containerId: null,
    bindedButtonId: null,
    };
    let isBadge = false;
    mainLoop: for (let k1 in widget) {
    if (typeof widget[k1] !== "object") {continue;}
    for (let k2 in widget[k1]) {
    if (widget[k1][k2] && widget[k1][k2].classList && widget[k1][k2].classList.contains("grecaptcha-badge")) {
    isBadge = true;
    break mainLoop;
    }
    }
    }
    if (isBadge) {
    info.version = "v3";
    for (let k1 in widget) {
    let obj = widget[k1];
    if (typeof obj !== "object") {continue;}
    for (let k2 in obj) {
    if (typeof obj[k2] !== "string") {continue;}
    if (obj[k2] == "fullscreen") info.version = "v2_invisible";
    }
    }
    }
    let n1;
    for (let k in widget) {
    if (widget[k] && widget[k].nodeType) {
    if (widget[k].id) {
    info.containerId = widget[k].id;
    } else if (widget[k].dataset.sitekey) {
    widget[k].id = "recaptcha-container-" + Date.now();
    info.containerId = widget[k].id;
    } else if (info.version == 'v2') {
    if (!n1) {
    n1 = widget[k];
    continue;
    }
    if (widget[k].isSameNode(n1)) {
    widget[k].id = "recaptcha-container-" + Date.now();
    info.containerId = widget[k].id;
    break;
    }
    }
    }
    }
    for (let k1 in widget) {
    let obj = widget[k1];
    if (typeof obj !== "object") {continue;}
    for (let k2 in obj) {
    if (obj[k2] === null) {continue;}
    if (typeof obj[k2] !== "object") {continue;}
    if (obj[k2].sitekey === undefined) {continue;}
    if (obj[k2].action === undefined) {continue;}
    for (let k3 in obj[k2]) {
    if (k3 === "sitekey") info.sitekey = obj[k2][k3];
    if (k3 === "action") info.action = obj[k2][k3];
    if (k3 === "s") info.s = obj[k2][k3];
    if (k3 === "callback") info.callback = obj[k2][k3];
    if (k3 === "bind" && obj[k2][k3]) {
    if (typeof obj[k2][k3] === "string") {
    info.bindedButtonId = obj[k2][k3];
    } else {
    let button = obj[k2][k3];
    if (button.id === undefined) {
    button.id = "recaptchaBindedElement" + widget.id;
    }
    info.bindedButtonId = button.id;
    }
    }
    }
    }
    }
    if (typeof info.callback === "function") {
    let callbackKey = "reCaptchaWidgetCallback" + widget.id;
    window[callbackKey] = info.callback;
    info.callback = callbackKey;
    }
    return info;
    };
    })()