2010-02-13 5 views
3

Quelle est la meilleure solution légère et discrète pour ouvrir n'importe quel lien dans la popup de taille personnalisée avec le bouton "fermer"?Quelle est la meilleure solution discrète et légère pour ouvrir n'importe quel lien dans une popup de taille personnalisée?

Edit 3:

  • et si JavaScript est désactivé, lien doit être ouvert dans un nouvel onglet/fenêtre comme toute une page normale. Popup devrait être ouvert verticalement et horizontalement centre sur toute résolution d'écran (j'ai remarqué pop-up de certains sites sur le net sur la configuration de moniteurs, pop-up s'ouvre sur le deuxième moniteur) et sans toute barre d'outils barre d'adresse etc.
  • hauteur de pop-up devrait dépendre du contenu , non fixe

Je ne veux pas utiliser un plugin pour obtenir cet effet juste besoin d'un code simple et moins, ce qui aurait besoin fichier de bibliothèque jquery ne

comme ceci

alt text http://easycaptures.com/fs/uploaded/244/4705598517.jpg

Modifier: Je ne demande pas de "fenêtre modale" et "lightbox"

Edit 2:

Si js est désactivé alors pop-up devrait être ouvert dans une nouvelle fenêtre et "titre" du lien doit être changé aussi

comme ça: Le contenu viendra en lieu blanc.

<a href="http://stackoverflow.com" Title="Opens in a new pop-up" target="_blank"> 

dans ce

<a href="http://stackoverflow.com" Title="Opens in a new window" target="_blank"> 

et est-il possible de faire fonctionner le bouton "fermer la fenêtre", même si JS est désactivé.

+0

Ne confondra-t-il pas les utilisateurs si vous ouvrez * un lien avec le bouton "fermer"? – pavium

+0

"Edit: Je ne parle pas de" fenêtre modale "et" lightbox "- quoi alors? –

+0

@Pekka - popup simple –

Répondre

0

Cherchez-vous quelque chose le long des lignes JQuery UI Dialog?

Démo here. Je ne recommanderais pas de "vrais" popups (c'est-à-dire des fenêtres de navigateur séparées) car ils ont tendance à se bloquer de plus en plus et ne peuvent pas être complètement stylés (IE> 7 et FF forcer la popup pour des raisons de sécurité).

+0

Si vous cliquez sur un lien pour ouvrir la fenêtre "popup" alors il ne sera pas bloqué.Il s'agit des popups auto-ouverts qui sont bloqués (par exemple sur le chargement de la page). lien pour ouvrir une fenêtre contextuelle, par exemple, pour permettre à mes utilisateurs d'entrer dans la tension artérielle.Cela fonctionne très bien malgré mon bloqueur de pop-up –

+0

@Pekka - Je ne veux pas utiliser l'interface utilisateur jquery volumineuse pour un popup seulement –

+0

@Jitendra alors vous devez travailler avec le solut d'Adam ion. Je n'utiliserais plus les popups pour les raisons que j'ai décrites, mais c'est certainement possible. –

1

Je ne pense pas que ce soit généralement bonne idée, mais vous convient.

Oh, vous ne pouvez pas fenêtre centrale, il est spécifique à l'OS de cette façon.

Modifier: Comme Pekka me awarned, vous pouvez ensemble vous la position, donc une meilleure solution (non testé):
Edit 2: Edité comme questioneer voulait et aussi, ce qui bobince a fait remarquer - $this n » t exister

<a id="close" href="your-link" target="_blank" title="opens in a new window">close</a> 

et

$(document).ready(function(){ 
    $("#close").attr('title','opens in a new pop-up'); //set new title 

    $("#close").click(function(){ //click action 
     w = parseInt((screen.width - 600)/2); h = parseInt((screen.height - 400)/2); 
     cwin = window.open($(this).attr('href'), 'closewin', 
     'status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=0,scrollbars=0,height=400,width=600'); 
     cwin.moveTo(w,h); 
     return false; 
    }); 
}); 

Malheureusement, je ne sais pas comment régler la hauteur en fonction du contenu, cela nécessiterait plus de calculs.

+0

Oh mais vous pouvez! Il y a une méthode 'moveTo'. http://javascript.about.com/library/blpopup5.htm pourrait être bloqué par le navigateur de nos jours, cependant, cela fait longtemps que je l'ai utilisé pour la dernière fois. –

+0

'$ this' ->' $ (this) '. – bobince

1

La première étape est la solution de repli pour quand le script est désactivé, en utilisant l'attribut cible pour ouvrir la page dans une nouvelle fenêtre ou un nouvel onglet:

<a href="page.html" target="_blank">page</a> 

Ensuite, vous pouvez ajouter un script pour prendre en charge l'événement click :

<a href="page.html" target="_blank" onclick="window.open(this.href,this.target,'width=200,height=300');return false;">page</a> 

vous pouvez utiliser jQuery au lieu d'appliquer l'événement aux liens que vous voulez, par exemple l'appliquer à tous les liens avec class="popup":

$(function(){ 
    $('a.popup').click(function(e){ 
    window.open(this.href,this.target,'width=200,height=300'); 
    e.preventDefault(); 
    }); 
}); 

Vous pouvez ajouter plus de valeurs dans la chaîne de fonctionnalité, comme location=0,menubar=0,status=0,toolbar=0 pour essayer de supprimer des barres d'outils et autres à partir de la fenêtre. Cependant, la prise en charge de cette fonctionnalité est spécifique au navigateur et il n'est généralement pas possible de masquer l'emplacement.

Vous pouvez également essayer d'obtenir la résolution d'écran et de calculer les coordonnées pour centrer la fenêtre contextuelle, en utilisant les valeurs top=...,left=.... Obtenir la résolution d'écran est spécifique au navigateur, donc vous ne l'appliquerez que s'il est disponible.

Pour obtenir un bouton de fermeture dans la fenêtre contextuelle, vous avez besoin d'une page proxy qui peut ouvrir la page dans une iframe. Alors le code devient un peu plus long, bien sûr:

$(function(){ 
    $('a.popup').click(function(e){ 
    var w = window.open('',this.target,'width=200,height=300') 
    w.document.open(); 
    w.document.write(
     '<html>'+ 
     '<head>'+ 
     '<style>'+ 
     'iframe { border: none; height: 250px; }'+ 
     'a { float: right; padding: 10px; }'+ 
     '</style>'+ 
     '</head>'+ 
     '<body>'+ 
     '<iframe src="'+this.href+'"></iframe>'+ 
     '<a href="javascript:window.close();">Close</a>'+ 
     '</body>' 
    ); 
    w.document.close(); 
    e.preventDefault(); 
    }); 
}); 
+0

J'ai besoin de popup verticalement et horizontalement centre sur n'importe quelle résolution d'écran. –

+0

et hauteur de pop-up peut être augmentée sur le contenu, donc je veux seulement fixer la largeur et la hauteur de popup devrait sur le contenu et si le contenu de popup (hauteur) irait sous le pli puis barre verticale serait affiché dans la fenêtre principale du navigateur –

+0

@Jitendra: Ce que vous demandez, c'est contredire la solution légère que vous vouliez. Centrer la popup est spécifique au navigateur, ce n'est donc pas toujours possible. Rendre le popup se redimensionner au contenu nécessite que la page que vous ouvrez soit dans le même domaine, et en combinant cela avec le bouton de fermeture, cela devient de plus en plus complexe car vous avez maintenant à la fois une fenêtre et un iframe à redimensionner. De plus, certains navigateurs n'autorisent même pas le redimensionnement des fenêtres en utilisant un script. Donc, vous devez choisir entre léger et certaines autres fonctionnalités. – Guffa

Questions connexes