Проблема в том, что библиотека создает
/**
* Creates iframe with unique name
*/
_createIframe: function () {
// unique name
// We cannot use getTime, because it sometimes return
// same value in safari :(
var id = getUID();
// Remove ie6 "This page contains both secure and nonsecure items" prompt
var iframe = toElement('<iframe src="javascript:false;" name="' + id + '" />');
iframe.id = id;
iframe.style.display = 'none';
d.body.appendChild(iframe);
return iframe;
},
затем в submit
метод
var iframe = this._createIframe();
// some synchronous operations
addEvent(iframe, 'load', function (e) { // ...
Поскольку этот iframe имеет атрибут src
, Chrome начнет загрузку, а поскольку его src
является поддельным URL-адресом, эта операция фактически выполняется синхронно, то есть что событие загрузки уже настроено на запуск на следующей итерации event-l oop.
const frame = document.createElement('iframe');
frame.src = 'javascript:return false';
document.body.append(frame);
frame.addEventListener('load', (evt) => console.log('loaded', frame.src) );
setTimeout( () => frame.src = "about:blank", 0 );
// Results in Chrome:
// loaded javascript:return false
// loaded about:blank
// Results in Firefox:
// loaded about:blank
Таким образом, единственное событие load
, которое получает эта библиотека, - это событие начальной загрузки пустого документа, а не событие реального запроса.
Чтобы исправить это, все, что вам нужно, это удалить этот src="javascript:false;"
из кода библиотеки: https://jsfiddle.net/9phxmqjw/