Опера не распознает iframe.load - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть файл, который загружается через iframe. У меня сейчас работает во всех браузерах, кроме Opera. Чтобы сначала отправить форму, у меня есть

$(document).ajaxComplete(function() {
    $('.aboutContentImageForm').each(function() {
        var $this = $(this);
        $this.find('[type=file]').change(function() {
            $this.submit();
        });
    });
});

Затем, чтобы захватить возвращенные данные, я использую

$('.aboutContentImageForm').live('submit', function() {     
    $('#' + $this.attr('target')).load(function() {

        var responseHtml = $(this).contents().find('body'),
        response = responseHtml.html();

        alert(response);
    });
});

И мой HTML

<form action="ajax/about_content.php" method="post" enctype="multipart/form-data" class="aboutContentImageForm" target="form_image_upload_content_id_8">
    <fieldset>                          
            <input type="file" name="image_path" id="image_path_8">
    </fieldset>
</form>
<iframe id="form_image_upload_content_id_8" name="form_image_upload_content_id_8"></iframe>

Итак, моя форма нацелена на iframe, а затем, как только загрузка iframe закончится, возьмите возвращенные данные.

Я могу подтвердить, что iframe получает данные ответа. Я вижу это в кадре после того, как нажму «отправить». Я просто не могу зафиксировать событие, когда iframe получает указанные данные. Это ошибка с .load()?

Редактировать

после помещения alert в load() похоже, что он признает, что это действие завершено, но почему они не могут получить данные моего ответа?

1 Ответ

1 голос
/ 30 сентября 2011

Я думаю, что у вас правильный подход, но есть несоответствия с готовностью DOM в iFrames между пользовательскими агентами. Плагин формы jQuery использует ту же технику. Глядя на исходный код этого плагина, я вижу, что им нужно немного потанцевать, чтобы разобраться с этой проблемой, и Opera особо упоминается.

Возможно, вы захотите взглянуть на некоторые идеи: https://github.com/malsup/form/blob/e77e287c8024d200909a7b4f4a1224503814e660/jquery.form.js#L409

...