Невозможно загрузить изображение, используя JavaScript в событии onsubmit формы в Safari - PullRequest
1 голос
/ 25 августа 2011

Я хочу загрузить изображение с JS в событии формы «onsubmit», не останавливая действие отправки формы.

Я делаю следующее:

var img = new Image();
img.onload = function(){
    myfunction();
};
img.src = URL_FOR_PHP_SCRIPT_TO_DO_SOME_LOGIC;
window_sleep(750); //Custom method to hang the CPU for 750ms until the request to call the image is called.

Эта логика ДОЛЖНА для меня, я имею в виду, что я не хочу использовать settimeout для отсрочки отправки формы, и мне нужно вызывать URL_FOR_PHP_SCRIPT_TO_DO_SOME_LOGIC таким образом, поскольку этот код находится в файле JS из другого домена. Эта логика прекрасно работает во всех браузерах, и отправляется запрос на вызов изображения - что именно мне нужно, однако в safari он не вызывает запрос изображения и начинает отправку формы напрямую. Я пытался добавить событие «onunload» на страницу, содержащую форму, когда браузеры работают в режиме сафари, но это тоже не помогло, и форма все еще отправляла данные напрямую, не начиная отправку запроса на загрузку изображения.

1 Ответ

0 голосов
/ 25 августа 2011

Вы не можете повесить Safari и Firefox4 + с циклами while, что, как я полагаю, вы делаете в своей функции сна.

Единственным реальным способом повесить браузер будет синхронный вызов Ajax вместо запроса изображения. Плохая вещь в вызове синхронизации - он блокирует браузер до тех пор, пока он не вернется. Медленные соединения могут означать долгое ожидание перед отправкой формы.

Другой вариант - отправить форму на свой сервер и затем переслать ее на другой сервер.

...