2010-11-22 15 views
3

D'accord, l'histoire est longue mais j'espère que vous pouvez supporter avec moi pour qu'il y ait un peu de contexte:Tout le monde peut fermer la popup générée par JPery plugin bPopup, à partir d'un iframe enfant?

Je suis en train de développer la section d'enregistrement pour un portail utilisant ASP.NET et de rendre les choses belles , J'ai décidé d'utiliser bPopup de here pour charger la page d'enregistrement dans le iframe de la page d'appel (page parente). Maintenant, j'ai besoin d'un moyen de fermer l'iframe après un enregistrement réussi, donc du codebehind de la page d'enregistrement (imbriqué dans l'iframe) j'ai essayé une fonction Javascript du parent qui me permet de le faire, voici la fonction pour fermer l'iframe généré par le plugin:

function bPopup_close() { 
     $(".bClose").closePopup(); 
    return false; 
} 

et voici le code derrière de la iframe (la fonction sera appelée à présenter):

ClientScript.RegisterOnSubmitStatement 
     (GetType(), "Javascript", "javascript: window.opener.bPopup_close();"); 

je n'étais pas en mesure de fermer la fenêtre. Fait intéressant, Firebug m'a montré qu'après avoir cliqué sur le bouton soumettre, window.opener était nul. Cela signifie-t-il que le parent était effectivement fermé? Quoi qu'il en soit, le popup était toujours là ...

Espérons que vous pourriez partager quelques idées sur quelque chose de similaire?

Répondre

11

Je vois que dinbror vous avez déjà répondu sur sa page :)

@fred: Glad you like it. Are you using the newest version of bPopup?

Solution: Create a function on the page which opens the popup:

function closeBPopup() { $(selector).bPopup().close() }

Then you can trigger it inside your iframe whenever you are done doing your stuff with:

parent.closeBPopup();

+0

Quand j'ai appelé le javascript de codebehind: ClientScript.RegisterOnSubmitStatement (GETT ype(), "Javascript", "javascript: parent.bPopup_close();"); J'ai l'erreur: parent.bPopup_close n'est pas une fonction javascript: parent.bPopup_close(); ..... soupir ... où est-ce que je me suis trompé? – fred

3

Après une demi-journée, je l'ai finalement obtenu de travailler avec:

ClientScript.RegisterStartupScript (GetType(), "blah", "< script type=\"text/javascript\">bclose(); < /script> ", false);

et le code bClose() est :

function bclose() { 
     parent.$("#popup").bPopup().close(); 
     return false; 
    }