Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Проблемка с OnSubmit = return false; (https://javascript.ru/forum/css-html-firefox-mizilla/37612-problemka-s-onsubmit-%3D-return-false%3B.html)

Ларин 26.04.2013 20:27

Проблемка с OnSubmit = return false;
 
Приветствую.
Существует форма(метод пост): два текстовых инпута (a и b) и кнопка. Я хочу при отправке формы, времено останавливать отправку, вызывать изображение(picture) с динамичной страницы, а затем отправлять все дальше.

Вышла такая функция(вызывается в OnSubmit с return false):

function stop(postform) {
//Соурсом изображения делаю адрес нужной мне картинки с двумя гетами, взятыми из текстовых полей.
document.getElementById("picture").src = '127.0.0.1/photo.png?a='+ document.getElementById("a").value +"&b="+ document.getElementById("b").value;

//Немного "притормаживаю" выполнение, чтобы картинка успела загрузиться 
 var date = new Date();
 var curDate = null;
 do { curDate = new Date(); }
 while(curDate-date < 1000);

//отправляю форму
postform.submit(); 
   }



С Хромом, Ие и Оперой все нормально проходит, картинка успешно запрашивается с гетами, даже с меньшей паузой, а после пост отправляется по назначению.

Но почему-то у пользователей с лисой, запрос до картинки не проходит.

Примечательно, что если вставить какой-нибудь alert('a'); между изменением соурса изображения и приостановкой, или между приостоновкой и .submit, то все работает так как надо, изображение успешно загружается.
Сначала думал что все дело в "притормаживании" и просто не хватает времени, но даже при паузе в 10к мс и больше, страница даже не пытается обратиться к соурсу картинки. Значит, наверное, дело не в этом.

По OnClick, кстати, без отправки поста, запрос проходит нормально.


Интересует является ли это какой-то фичей фаерфокса, для дополнительной безопасности, или просто этот браузер как-то иначе обрабатывает события?

Чем можно попробовать заменить, в таком случае, задержку и субмит, чтобы запрос к изображению успевал пройти перед переходом по посту?


P.S. Задача именно чтобы прошел запрос до картинки, с гетами, показывать то что вернется надобности нет.

ksa 26.04.2013 20:43

Ларин, setTimeout() пока никто не отменял...

Ларин 26.04.2013 21:02

ksa, такая же беда. Делаю:

setTimeout(postform.submit(), 1000);


Время проходит, субмит отправляется, а сама страница с момента отправки и до момента перехода как будто замораживается.

ksa 26.04.2013 21:04

Цитата:

Сообщение от Ларин
такая же беда

Тогда готовь тестовый пример... Т.к. я пока "замороженых страниц" не видел... :)

danik.js 26.04.2013 21:38

Цитата:

Сообщение от Ларин
setTimeout(postform.submit(), 1000);

Ну тупо же
setTimeout(postform.submit.bind(postform), 1000);

Deff 26.04.2013 23:55

Ларин,
1. вместо субмита ставьте в форму кнопу button, на которую повесьте Вашу функцию, по окончании анимации вызовите субмит формы - ну или кликните скрытую display:none кнопку субмит

danik.js 27.04.2013 04:32

Цитата:

Сообщение от Deff
ну или кликните скрытую display:none кнопку субмит

События, программно вызванные в браузере, не влекут за собой действия по умолчанию. Клик по кнопке ничего не даст.

Прочитал вопрос автора. Блин, ну все просто же.
Устанавливаем обработчик события onload картинки, и в нем уже делаем сабмит формы. А кстати - в чем смысл грузить какую-то картинку если юзер ее и увидеть то не успеет?


Часовой пояс GMT +3, время: 03:47.