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;
});
Спасибо!