2010-09-20 3 views
0

J'ai deux pages, le parent et cette page J'utilise:top.opener.location.reload (true) ne page parent rafraîchissant sur IE

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

pour ouvrir une nouvelle fenêtre et manipuler des données sur Là.

Quand je termine ce que je fais je besoin de la page parent pour rafraîchir donc je vais obtenir les nouvelles données les données qu'il contient ...

D'après ce que je sais que la méthode est:

top.opener.location.reload(true); 

mais pour une raison quelconque, il ne fonctionne pas dans IE8 ou IE9 ...

Comme je construis une application et non une page Web générale. Il fonctionnera sur Windows OS avec IE (comme pour l'instant c'est toujours le système le plus commun ... rien à faire à ce sujet) donc j'ai vraiment besoin de résoudre ce problème ....

Je n'en trouve pas nouvelle solution sur le web pour ce problème, tout le monde dit qu'il devrait fonctionner comme ça ...

Quelqu'un at-il rencontré ce problème? et quelqu'un sait-il comment le résoudre?

OK, SUIVRE question: quand je fais opener.location.reload(true); rend-il encore la page parent à nouveau (comme ça sonne) ou non? Si c'est le cas, je suis dans un gros problème, sinon, il doit y avoir un moyen de le faire ...

Le problème est que j'ai un appel ajax dans la page parent et pour une raison quelconque, il reste dans ses vieilles valeurs lorsque je l'utilise, que lorsque je recharge la fenêtre enfant, la ajax mère montre les résultats réels, un code suit ...

Ceci est dans le document prêt fonction jQuery de la page d'ouverture:

$('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() 
     } 
    ); 

Ceci est l'une des fonctions de la fenêtre de l'enfant qui devrait rafraîchir l'ouvre:

$('#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(); 
     } 
    ); 

10x ...

Répondre

1

top est utilisé pour obtenir le document le plus extérieur dans le physique actuel de toute façon, vous ne devriez pas utiliser top à moins qu'il n'y ait des cadres ou des iframes dans votre page pop-up. Ce qui suit va faire:

opener.location.reload(true); 
+0

J'ai essayé toutes les trois façons, mais ne fonctionnait pas, toujours obtenir les anciennes données ... mais 10x ... – Erez

1

Si vous souhaitez accéder à la fenêtre parent (ou cadre), vous devez utiliser parent, non top:

parent.location.reload(true); 

Lorsque votre page est un cadre dans cette fenêtre , ajoutez parent s à elle:

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

La question concerne les fenêtres contextuelles et non les cadres. L'utilisation par le PO du mot «parent» est trompeuse. –

2

Il semble que IE 8 et 9 ont des restrictions de sécurité lors de l'actualisation de l'ouvre-porte.

1

J'ai rencontré ce problème où reload() fonctionne dans Chrome, mais vomit dans IE.Essayez d'utiliser window.location.replace (votre URL et vos paramètres ici).

Vous devez collecter l'URL et les paramètres de replace(), mais il contourne le message d'erreur IE.

Exemple:

Dans Joomla 2.5 fenêtre parent lance modale pour la saisie des utilisateurs, où nous avons besoin de recharger la fenêtre parent (vue) afin d'exécuter du code qui utilise l'entrée modale.

Le modal déclenche une fonction dans la fenêtre parent comme;

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); 
     } 
    } 
Questions connexes