J'ouvre une fenêtre popup modale. Ensuite, j'accède à une zone de texte de fenêtre parent et à d'autres attributs à l'aide de window.opener
. Cela fonctionne très bien dans Firefox mais pas dans IE8. Cela donne l'erreur 'window.opener est null' . Comment puis-je accéder aux attributs de la fenêtre parente dans la fenêtre enfant qui fonctionne dans les deux navigateurs.
Vous pouvez passer des arguments à la fonction showModalDialog. Passez simplement l'objet window comme argument.
window.showModalDialog(theURL, window);
Vous pouvez accéder aux arguments depuis la fenêtre modale à l'aide de dialogArguments. Voir: http://msdn.Microsoft.com/en-us/library/ms533723%28VS.85%29.aspx
var openerWindow = window.dialogArguments;
Le problème peut être résolu de deux manières: Remarque: " window.opener " n'est pas pris en charge par IE si " showModalDialog " est utilisé.
1) Au lieu de " window.showModalDialog " utiliser " window.open "
2) Si vous souhaitez utiliser " window.showModalDialog ", procédez comme suit:
<script language="javascript" type="text/javascript">
function YourFunction()
{
var opener = null;
if (window.dialogArguments) // Internet Explorer supports window.dialogArguments
{
opener = window.dialogArguments;
}
else // Firefox, Safari, Google Chrome and Opera supports window.opener
{
if (window.opener)
{
opener = window.opener;
}
}
// write you code and refer "opener"
window.close();
}
</script>
Désactivez le "Mode protégé" d'Internet Explorer, qui empêche l'accès à cet objet.
Les étapes pour cela sont:
Vous devriez maintenant pouvoir accéder à l'objet window.opener.
L'approche que je choisirais est la suivante:
OpenWindow
, que le navigateur détecte pour la méthode window.opener
Par exemple:
if(window.opener == undefined) {
//probably not Firefox...
}
et s'il le trouve, il l'utilise, sinon il teste la variante IE et l'utilise. Et puis, il vérifie la version de Safari, etc ...
Comme alternative aux navigateurs, vous pouvez attribuer un attribut personnalisé à la nouvelle fenêtre pendant son ouverture:
var popup = window.open(...);
popup.isPopup = true;
Ensuite, dans la page référée:
if (window.isPopup) {
// Do something
}
else {
// Not in a popup
}