RobinHerbots/Inputmask - как заставить скрипт игнорировать require.js

Далёк от современного JS. Возникла проблема со следующей ситуацией.

На произвольные сайты через ajax грузится форма, которая использует маску https://github.com/RobinHerbots/Inputmask

Если на сайте нет require.js, то всё ок, window.Inputmask существует, такой код работает:

var selector = document.getElementById("selector");

var im = new Inputmask("99-9999999");
im.mask(selector);

В противном случаи всё ломается. Пришлось хакнуть файл https://github.com/RobinHerbots/Inputmask/blob/5.x/dist/inputmask.js т.к. я не могу знать все варианты и версии используемых скриптов на сторонних сайтах и не нашёл другого решения.

! function webpackUniversalModuleDefinition(root, factory) {
    // if ("object" == typeof exports && "object" == typeof module) module.exports = factory();
    // else if ("function" == typeof define && define.amd) define([], factory);
    // else {
        var a = factory();
        for (var i in a)("object" == typeof exports ? exports : root)[i] = a[i];
    // }
}

Это версия 5.x, в 4.x всё примерно так же.

Использовать сборщики, jQuery или оборачивать форму в iframe - не вариант. Можно как-то правильным способом заставить Inputmask "не заметить" наличие require.js? Пока в голову пришла только сомнительная идея такого типа (не проверял):

// прячем define
var tmp = define;
define = null;

// подргружаем inputmask
var inputmaskJS = document.createElement("script");
inputmaskJS.src = '//__cdn__/inputmask.min.js';
document.head.appendChild(inputmaskJS);

// возвращаем define
inputmaskJS.addEventListener('load', function () {
    define = tmp;
});

Спасибо!


Ответы (0 шт):