如何防止iframe加载事件?

时间:2008-10-12 16:31:32

标签: javascript iframe

我的aspx页面上有一个iframe和几个表。现在当页面加载时,这些表被隐藏了。 iframe用于将文件上载到数据库。根据事件的结果,我必须在我的主页面上显示一个特定的表格(这些表格基本上有“重试”,“下一步”按钮......取决于文件是否上传我必须显示相应的按钮)

现在我在iframe的“onload”事件上有一个JavaScript,我将这些表隐藏起来。当控件在事件发生后返回时,我会显示一个特定的表格。但随后iframe再次加载并隐藏表格。任何人都可以帮我解决这个问题。我不希望第二次加载iframe。

由于

4 个答案:

答案 0 :(得分:1)

嗯,你说你在aspx页面上, 我想iframe会做一个回发,所以为此重新加载页面。 如果你无法避免回发,你必须在发回之前在主页面上设置一个标志,并在你加载时检查它...

...类似于:

mainpage.waitTillPostBack =  true
YourFunctionCausingPostBack();


..

onload=function(){
if(!mainpage.waitTillPostBack){
hideTables();
}
mainpage.waitTillPostBack = false;
}

答案 1 :(得分:0)

我不确定你的问题是什么,但也许你的方法应该有所不同。尝试将代码放入iframe调用父代的函数。这些函数将显示正确的表:

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

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

这会对您的iframe进行大量控制,远离主页。

答案 2 :(得分:0)

我的问题没有足够的细节来确定是否可以阻止iframe第二次加载。但我建议使用javascript变量来检查是否第二次加载iframe,在这种情况下跳过隐藏表的逻辑,

答案 3 :(得分:0)

这是我的代码

function 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';


        }
    }

function UploadComplete(message,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是我想要显示的表,具体取决于事件的结果。