Как предотвратить событие загрузки iframe? - PullRequest
0 голосов
/ 12 октября 2008

У меня есть iframe и несколько таблиц на моей странице aspx. Теперь, когда страница загружается, эти таблицы скрыты. Iframe используется для загрузки файла в базу данных. В зависимости от результата события мне нужно показать конкретную таблицу на моей главной странице (в этих таблицах в основном есть кнопки «Повторить», «Далее» ... в зависимости от того, загружен файл или нет, я должен показать соответствующую кнопку) .

Теперь у меня есть JavaScript для события onload iframe, где я прячу эти таблицы для начала. Когда элемент управления возвращается после события, я показываю определенную таблицу. Но затем iframe загружается снова и таблицы скрываются. Может ли кто-нибудь помочь мне с этой проблемой. Я не хочу, чтобы iframe загружался второй раз.

Спасибо

Ответы [ 4 ]

1 голос
/ 17 октября 2008

ммм, вы сказали, что находитесь на странице aspx, Я полагаю, что iframe делает постбэк, поэтому для этого он перезагрузит страницу. Если вы не можете избежать обратной передачи, вы должны установить флажок на главной странице непосредственно перед отправкой и проверить это во время загрузки ...

... что-то вроде:

mainpage.waitTillPostBack =  true
YourFunctionCausingPostBack();


..

onload=function(){
if(!mainpage.waitTillPostBack){
hideTables();
}
mainpage.waitTillPostBack = false;
}
0 голосов
/ 12 октября 2008

У меня недостаточно подробностей из вашего вопроса, чтобы определить, можно ли предотвратить повторную загрузку iframe. Но я бы предложил использовать переменную javascript, чтобы проверить, загружается ли iframe второй раз, и в этом случае пропустить логику для сокрытия таблиц,

0 голосов
/ 12 октября 2008

Это мой код

функция initUpload () { // alert («Загрузка IFrame»); _divFrame = document.getElementById ('divFrame'); _divUploadMessage = document.getElementById ('divUploadMessage'); _divUploadProgress = document.getElementById ('divUploadProgress'); _ifrFile = document.getElementById ('ifrFile'); _tbRetry = document.getElementById ('tbRetry'); _tbNext = document.getElementById ( 'tblNext');

         _tbRetry.style.display='none';
         _tbNext.style.display='none';

        var btnUpload = _ifrFile.contentWindow.document.getElementById('btnUpload');

        btnUpload.onclick = function(event)
        {
            var myFile = _ifrFile.contentWindow.document.getElementById('myFile');

            //Baisic validation
            _divUploadMessage.style.display = 'none';


            if (myFile.value.length == 0)
            {
                _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Please select a file.</span>';
                _divUploadMessage.style.display = '';
                myFile.focus();
                return;
            }

            var regExp = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.doc|.txt|.xls|.docx |.xlsx)$/;

            if (!regExp.test(myFile.value)) //Somehow the expression does not work in Opera
            {
                _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Invalid file type. Only supports doc, txt, xls.</span>';
                _divUploadMessage.style.display = '';
                myFile.focus();
                return;
            }


            _ifrFile.contentWindow.document.getElementById('Upload').submit();
            _divFrame.style.display = 'none';


        }
    }

функция UploadComplete (сообщение, isError) { предупреждение (сообщение); // предупреждение (IsError);

         clearUploadProgress();


        if (_UploadProgressTimer)
        {
            clearTimeout(_UploadProgressTimer);
        }

        _divUploadProgress.style.display = 'none';
        _divUploadMessage.style.display = 'none';
        _divFrame.style.display = 'none';
        _tbNext.style.display='';

        if (message.length)
        {
            var color = (isError) ?  '#008000' : '#ff0000';

            _divUploadMessage.innerHTML = '<span style=\"color:' + color + '\;font-weight:bold">' + message + '</span>';
            _divUploadMessage.style.display = '';
            _tbNext.style.display='';
             _tbRetry.style.display='none';



        }
    }

tblRetry и tblNext - таблицы, которые я хочу отобразить в зависимости от результата события.

0 голосов
/ 12 октября 2008

Я не уверен, в чем ваша проблема, но, возможно, ваш подход должен быть немного другим. Попробуйте поместить в iframe код, который будет вызывать функции родителя. Эти функции будут отображать правильную таблицу:

<!-- in the main page --->
function showTable1() {}

<!-- in the iframe -->
window.onload = function () {
    parent.showTable1();
}

Это обеспечит большой контроль над вашим iframe, вдали от главной страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...