2009-11-25 5 views
0

Comment puis-je ouvrir une nouvelle fenêtre dans javascript correctement?Question textuelle de base: Comment ouvrir une nouvelle fenêtre?

J'ai essayé:

<a href='javascript:window.open("testing.html","mywindow","menubar=0,resizable=1,width=200,height=500,left=0,top=0");' >New Window</a> 

Cela provoque une nouvelle fenêtre pop-up, mais dans Firefox, il quitte la page originale avec une fenêtre vide en disant « [objet fenêtre] ». J'ai aussi eu des problèmes avec IE aussi. Comment puis-je ouvrir une fenêtre compatible avec Firefox, IE, Safari et Chrome? Bonus: Si vous pouvez aider à créer un lien javascript dégradable (je pense que c'est le terme).

Répondre

3

En plaçant le script dans la propriété href, le lien suivra la représentation sous forme de chaîne du retour valeur du script. La manière la plus rétrocompatible est de placer l'URL et la cible dans le lien en tant qu'attributs normaux, et d'utiliser l'événement onclick pour ouvrir une fenêtre au lieu de suivre le lien. En retour faux de l'événement vous empêchez le lien d'être suivi:

<a href="testing.html" target="_blank" onclick="window.open(this.href,this.target,'menubar=0,resizable=1,width=200,height=500,left=0,top=0');return false;">New Window</a> 

Si Javascript est désactivé dans le navigateur, il va suivre le lien à la place et l'ouvrir dans une nouvelle fenêtre.

Utilisez la cible _blank pour ouvrir une nouvelle fenêtre.

+0

merci pour l'excellente explication! Savez-vous si cela fonctionne dans IE6? – chris

+0

@chris: Cela fonctionne certainement dans IE6. Je m'attendrais à ce qu'il fonctionne aussi loin que IE4 au moins ... – Guffa

+0

@Guffa: super, merci! – chris

3

javascript: Les liens sont assez old-school. Essayez-le avec un attribut onclick. Et n'oubliez pas de return false dans le gestionnaire onclick pour empêcher la page principale de suivre également le lien.

<a href="testing.html" onclick="window.open(this.href,'mywindow','menubar=0,resizable=1,width=200,height=500,left=0,top=0'); return false;">New Window</a> 
0

vous pouvez ajouter void(0) à votre code javascript qui empêchera le navigateur de faire quoi que ce soit à la fenêtre actuelle

<a href='javascript:window.open("testing.html","mywindow","menubar=0,resizable=1,width=200,height=500,left=0,top=0"); void(0)' >New Window</a> 
0
<a href='javascript:(function(){window.open("testing.html","mywindow","menubar=0,resizable=1,width=200,height=500,left=0,top=0")}();' >New Window</a> 

Ou faire fonction:

<a href="file.html" class="popup">File</a> 

<script>window.onload = function(){ 
document.getElementsByTagName('a').onclick = 
function(evt){ el = evt.target; if (el.className == 'popup'){ 
     window.open(el.href,"mywindow","menubar=0,resizable=1,width=200,height=500,left=0,top=0"); 
     return false; }; };</script> 
Questions connexes