Предотвращение обратной передачи iframe от вызова jQuery 'ready' функции для parent - PullRequest
0 голосов
/ 14 июля 2009

У меня есть iframe в макете вкладки jQuery. Я использую iframe для загрузки изображения, для имитации загрузки файла AJAX. Кажется, что всякий раз, когда мой постбэк iframe выполняет, $ (document) .ready родительской страницы запускается, сбрасывая текущую вкладку, на которой я размещен.

Есть идеи, как это предотвратить?

    function uploadDone() {

    var data = eval("("+ $('#upload_target').contents().find('body').html() +")");
    if(data.success) {
       $('#upload_summary').append("<img src='" + data.full_path + "' />");
       $('#upload_summary').append("<br />Size: " + data.file_size + " KB");
    }
    else if(data.failure) { //Upload failed - show user the reason.
        alert("Upload Failed: " + data.failure);
    }
}

$(document).ready(function() {

    $('#image_uploader').submit(function() {

        if($.browser.safari || $.browser.opera) {

            $('#upload_target').load(function(){
                setTimeout(uploadDone, 0);
            });

            var iframe = document.getElementById('upload_target');
            var iSource = iframe.src;
            iframe.src = '';
            iframe.src = iSource;

        } else {

            $('#upload_target').load(uploadDone);
        }
    });

});

1 Ответ

1 голос
/ 17 июля 2009

Флаг имеет смысл (как то, что упомянул SolutionYogi). Если document.ready в родительском фрейме требуется выполнить только один раз, присвойте глобальному флагу значение, которое вы можете проверить при повторном запуске.

Другой способ - отменить привязку документа. Уже после его выполнения. Например. $(document).unbind('ready')

...