Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.01.2013, 12:57
Новичок на форуме
Отправить личное сообщение для gogoer Посмотреть профиль Найти все сообщения от gogoer
 
Регистрация: 29.01.2013
Сообщений: 3

Проблема с submit() в Opera.
Есть скрипт Uber Uploader, использующийся для загрузки файлов на сервер. Он корректно работает в Chrome и Firefox, но в Opera высыпается в ошибку.

Вот проблемный фрагмент:

function startUpload(upload_id, debug_upload){
document.getElementById('upload_button').disabled = true;
document.adminForm.action = path_to_upload_script + '?upload_id=' + upload_id;
document.adminForm.submit();

for(var i = 0; i < upload_range; i++){ document.adminForm.elements['upfile_' + i].disabled = true; }
if(document.getElementById('upload_div')){ document.getElementById('upload_div').style.displa y = "none"; }

initializeProgressBar(upload_id);
}


было выяснено, что проблема возникает с document.adminForm.submit(), т.к. в мозиле и хроме после этой строки на сервере происходят определенные изменения в загрузчике, а в опере нет.

Такое подозрение, что в опере submit выполняется не сразу, а после выхода из функции. Но т.к. initializeProgressBar(upload_id) проверяет корректность сабмита, то получается ошибка.

подскажите, пожалуйста, как можно решить проблему.
Ответить с цитированием
  #2 (permalink)  
Старый 29.01.2013, 14:48
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

document.adminForm[0].action = path_to_upload_script + '?upload_id=' + upload_id;
document.adminFormх[0].submit();
Ответить с цитированием
  #3 (permalink)  
Старый 29.01.2013, 16:55
Новичок на форуме
Отправить личное сообщение для gogoer Посмотреть профиль Найти все сообщения от gogoer
 
Регистрация: 29.01.2013
Сообщений: 3

Нет, не работает. Дело в том, что сам по себе submit() работает, но работает не тогда, когда нужно.

По логике submit() посылает perl-скрипту файл, perl-скрипт выполняет определенные действия (ставит метку, что загрузка пошла), затем функция initializeProgressBar() проверят наличие метки и, если все ок, рисует панель прогресса загрузки.
В реальности получается, что когда выполняется initializeProgressBar(), никакой метки там нет, т.е. perl-скрипт не выполнил действия. Метка появляется после завершения работы функции startUpload().
Из этого я сделал вывод, что submit() срабатывает не сразу, а после завершения функции. Если следить за процессом отладчиком, то так и получается.
Может есть возможность как-то принудительно начать отправку?
Ответить с цитированием
  #4 (permalink)  
Старый 30.01.2013, 01:44
Новичок на форуме
Отправить личное сообщение для gogoer Посмотреть профиль Найти все сообщения от gogoer
 
Регистрация: 29.01.2013
Сообщений: 3

С вопросом разобрался. Firefox выполняет form.submit() немедленно, а Opera ждет завершения выполнения функции и только потом отсылает форму на сервер. Придется переделывать логику скрипта
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема JSON.response в OPERA moreo AJAX и COMET 0 30.11.2011 06:12
Opera, FireFox, Chrome - проблема с получение HTML выдеенно фрагмента Frozen Coyote Firefox/Mozilla 1 24.02.2011 15:43
Проблема с write. (Opera) bomg Opera, Safari и др. 8 08.07.2009 09:59
Проблема с Ajax запросом в IE и Opera flash_uz AJAX и COMET 0 30.04.2009 15:08
Проблема с меню не корректно отображается в браузерах отличных от IE (т.е. FF Opera) 3xv Элементы интерфейса 2 16.04.2009 19:51