2008-10-12 6 views
0

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

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

Благодаря

ответ

0

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

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

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

Это положило бы много контроля в вашей IFRAME, вдали от главной страницы.

0

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

0

Это мой код

функция 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) { оповещение (сообщение); // alert (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 являются таблицы, которые я хочу, чтобы отобразить в зависимости от результата события.

1

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

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

mainpage.waitTillPostBack = true 
YourFunctionCausingPostBack(); 


.. 

onload=function(){ 
if(!mainpage.waitTillPostBack){ 
hideTables(); 
} 
mainpage.waitTillPostBack = false; 
} 
Смежные вопросы