Skip to content

Instantly share code, notes, and snippets.

@dandelionmood
Created May 9, 2012 13:58
Show Gist options
  • Save dandelionmood/2644682 to your computer and use it in GitHub Desktop.
Save dandelionmood/2644682 to your computer and use it in GitHub Desktop.
Contourner le blocage automatique des popups
/**
* Fonction permettant d'ouvrir une popup centrée
* aux dimensions souhaitées.
*
* @param string url de la page à ouvrir.
* @param int largeur de la fenêtre
* @param int hauteur de la fenêtre
*/
function OuvrirFenetrePopup(pageURL, w, h)
{
lien_ouverture_popup = $('#lien-ouverture-popup');
lien_ouverture_popup
.attr('href', pageURL)
.data('w', w)
.data('h', h)
.trigger('click');
}
/**
* Récupérer la fenêtre qui vient d'être ouverte.
* @returns window la fenêtre.
*/
function RecupererFenetrePopup() {
// La référence à la fenêtre à ouvrir est enregistrée dans le DOM par jQuery.
return $('#lien-ouverture-popup').data('win');
}
// Code exécuté dès la fin du chargement du DOM.
$(document).ready(function() {
// Mise en place du lien invisible au chargement de la page, on l'ajoute
// à la fin du document.
var lien_ouverture_popup = $('<a></a>')
.attr('id', 'lien-ouverture-popup')
.attr('href', 'javascript:void(0);')
.attr('style', 'display: none;');
$('body').append( lien_ouverture_popup );
// Un clic sur ce lien invisible va déclencher l'ouverture de la popup.
lien_ouverture_popup.click(function() {
var w = $(this).data('w'),
h = $(this).data('h'),
pageURL = $(this).attr('href');
var left = (screen.width/2)-(w/2);
var top = (screen.height/2)-(h/2);
var targetWin = window.open(
pageURL,
'_blank',
'toolbar=no, location=no, directories=no, status=no, menubar=no, '+
'scrollbars=yes, resizable=no, copyhistory=no, width='+
w+', height='+h+', top='+top+', left='+left
);
// On enregistre la référence à la fenêtre qui vient d'être ouverte pour
// pouvoir la récupérer au besoin à travers la méthode
// RecupererFenetrePopup().
lien_ouverture_popup.data('win', targetWin);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment