Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Opera, submit + setInterval


Автор: s0lman 9.8.2011, 15:14
Всем привет
имеем код
Код

form.submit();

window.setInterval(function(){
                ...
            }, 1000);


Отправляется форма с файлом, внутри setInterval шлется ajax-запрос серверу, который возвращает прогресс загрузки (напр. {received: 20, size: 50})

Проблема в том, что в Opera и IE7 JS-код внутри setInterval вообще не исполняется (после сабмита)

Кто-нибудь может сказать, как можно обойти эту неприятность?
Спасибо.


Автор: s0lman 9.8.2011, 16:27
UPD. Насчет ИЕ7 я погорячился - проблема только в опере.

Автор: нуп 9.8.2011, 17:06
Попробовал такое, и работает в опере 11.50
Код

<form action="index.php" method="post" id="tt">
    <input type="text" name="aaa" value="bbb" />
</form>
<script>
window.setInterval(function(){ alert('aaa'); }, 1000);

<?
    if(!isset($_POST['aaa'])) {
        echo "document.getElementById('tt').submit();";
    }
?>

</script>

Автор: s0lman 10.8.2011, 09:40
А такое попробуйте

Код

<html>
<head>
    <title>opera-test</title>
    <script type="text/javascript">

        function sendForm(){
            document.getElementById('form1').submit();
            opera.postError('after_submit');
            setInterval(function(){
                opera.postError('interval_upd3');
            }, 1000);
            opera.postError('after_submit2');
            return false;
        }
    </script>
</head>
<body>
    <form name="form1" id="form1" action="" method="post" enctype="multipart/form-data">
        <input type="file" name="file1" /> <br />

        <input type="button" onclick="sendForm()" value="Opera: Send form!" />
    </form>
</body>

</html>

Автор: нуп 10.8.2011, 09:46
Вы понимаете что происходит перезагрузка страницы после сабмита? 

Автор: s0lman 10.8.2011, 09:55
Угу... прикол в том, что в других броузерах во время сабмита отрабатывает таймер (если прикрепленный файл достаточно большой), а в опере - нет. Пичалька)

Автор: нуп 10.8.2011, 10:04
Такое негде потестить. Попробуйте вызывать таймер до или после функции sendForm smile  может прокатит

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)