2010-09-20 25 views
0

刷新父頁面我有兩頁,家長和從這個頁面,我使用:top.opener.location.reload(真)不是在IE

window.open('OrderDetailsFull.aspx?ObjectID=' + ObjectID[1] , "TableDetails","status=0 , toolbar=0 , location=no , menubar=0 , scrollbars=yes , height=600px , width=800px"); 

打開一個新的窗口,並通過操縱數據那裏。

當我完成我在做什麼,我需要在父頁面刷新,所以我將獲得新的數據,其數據...

從我知道的方法是:

top.opener.location.reload(true); 

但由於某些原因,它不是在IE8或IE9工作...

由於我建立一個應用程序,而不是一般的網頁。它會在Windows操作系統上運行的IE(因爲現在它仍是最常見的系統...什麼都沒有做這件事),所以我真的需要解決這個問題....

我找不到任何在網上對於這個問題,每個人說,它應該工作一樣,新的解決方案.....

有沒有人遇到這樣的問題?有誰知道如何解決它?

好,後續問題:當我做opener.location.reload(true);它是否重新呈現父頁(如它的聲音)或不?如果確實如此,那麼我遇到了一個大問題,如果沒有,那麼肯定有辦法做到這一點......

問題是我有一個ajax調用在父頁面,由於某種原因它停留在我使用它的舊值時,只有當我重新加載子窗口時,父ajax才顯示實際結果,一些代碼如下...

這是在文檔準備就緒的jQuery功能的開啓者頁面:

$('div[id^="divTable"]').hover(
     function(e){ 
      //קבלת זהות השולחן הנלחץ 
      ObjectID = $(this).attr('id').split('_'); 
      $(this).css("cursor","pointer");     
      //AJAX הבאת נתוני רשומת ההזמנה מהשרת ב 
      var OrderDetails = $.ajax({ 
        url:'AjaxActions/OrderDetails.aspx?ObjectID=' + ObjectID[1], 
        async:false     
       }).responseText; 
      //צף מעל שולחן כשעומדים עליו, ניתן לראות את פרטי הרשומה של אותו השולחן DIV 
      $(this).append($('<div style="position: absolute; top: 0; left: -150;">' + OrderDetails + '</div>')); 
      //וידוא שהשולחן עליו אנו עומדים יהיה העליון 
      $(this).css("z-index","10"); 
      $(this).siblings().css("z-index","1"); 
     }, 
     //כשיוצאים מהשולחן DIVהעלמת ה 
     function() { 
        $(this).find('div:last').remove() 
     } 
    ); 

這是在子窗口應刷新首戰的功能之一:

$('#ctrl_Print').click(
     function() 
     { 
      alert($('#hidItem').val()); 
      var Items = new Array(); 
      Items = $('#hidItem').val().split(','); 
      for(var i=0;i<Items.length;i++) 
      { 
       alert(Items[i]); 
      } 
      opener.location.reload(true); 
      window.location = 'OrderDetailsFull.aspx?OrderID=' + OrderID + '&ObjectID=' + ObjectID + '&Print=' + Items; 
      window.close(); 
     } 
    ); 

10倍......

回答

1

top用於內當前的物理得到最文件當你處理框架集和/或iframe也以任何方式,所以你不應該使用top除非有您的彈出頁面中的框架或iFrame是不相關的window.open,窗口。以下將做:

opener.location.reload(true); 
+0

我已經嘗試了所有三種方式,但沒有奏效,仍然得到舊數據...但是10倍... – Erez 2010-09-20 17:15:33

1

如果您要訪問父窗口(或框架),你應該使用parent,不top

parent.location.reload(true); 

當你的頁面是窗口內的框架,增加更多的parent s到它:

parent.parent.location.reload(true); 
+0

問題是關於彈出窗口,而不是框架。 OP使用「父母」一詞是誤導性的。 – 2010-09-20 17:00:48

2

它看起來像IE 8和9有刷新開啓者的安全限制。

1

我碰到的這個問題,在重載()在Chrome的工作,但在IE pukes。

嘗試使用window.location.replace(你的url和params在這裏)。

你一定要收集方法爲更換(網址而params),但它可以讓周圍的IE錯誤信息。

實施例:

在的Joomla 2.5父窗口中啓動用戶輸入,在那裏我們需要以運行使用模態輸入代碼重新加載的父窗口(視圖)的模態。

模態在父窗口中觸發一個函數,如:

function updateAddresses(runUpdate, itemID, closeModal){ 
     if(closeModal == true){ 
      SqueezeBox.close(); 
     } 

     if(runUpdate == true){ 
      //location.reload(); 
      var replaceURL = 'index.php?option=com_poecom&view=cart&ItemId='+itemID; 
      window.location.replace(replaceURL); 
     } 
    }