Вот так должно работать:
function findLodashAndReplaceGet(registry) {
for(const key in registry) {
const module = registry[key]?.exports
if(module && module._ && module._.VERSION === module.VERSION) {
module.get = ((g) => (...args) => {
if(args[1] === 'nativeEvent.isTrusted')
return true
return g(...args);
})(module.get);
}
}
}
findLodashAndReplaceGet(C._registry);
function setValue(element, value, options) {
if(typeof element === 'string')
element = document.querySelector(element);
options = Object.assign({
bubbles: true
}, options);
element.dispatchEvent(new Event('focus', options));
element.dispatchEvent(new Event('keydown', options));
element.dispatchEvent(new Event('keypress', options));
element.value = value;
element.dispatchEvent(new Event('input', options));
element.dispatchEvent(new Event('keyup', options));
element.dispatchEvent(new Event('change', options));
element.dispatchEvent(new Event('blur', options));
return element;
}
setValue('#id_password', 'New Value')
Функция findLodashAndReplaceGet должна выполняться один раз(но не критично). Она подменяет get в lodash таким образом что получение isTrusted всегда выдаёт true.
Спасибо им за то что потроха своего кода раскрывают в голобал, иначе было бы чутка по-сложнее.)