Voici mes 2 scripts:
popup.js
/*******************************************/
/****** Gestionnaire de popup (DOM) ******/
/****** Original script by koala64 ******/
/*******************************************/
// Création d'un objet
var o = new Object;
// Création d'une variable globale
var oNewWin = null;
// Propriétés Link de l'objet
o.Link =
{
// Gestionnaire des événements onclick pour chaque ligne du tableau
ClickHandler: function() {
// On récupère l'ensemble des lignes dans un tableau puis
// on parcourt le tableau. Si une ligne possède une classe 'line',
// on lance la fonction popup.
var oLines = document.getElementsByTagName('body')[0].getElementsByTagName('tr');
for( var i = 0 ; i < oLines.length ; i++ )
if( oLines[i ].className == 'line' ) {
oLines[i ].onclick = o.Popup.__Open;
oLines[i ].style.cursor = 'pointer';
}
},
}
// Propriétés Popup de l'objet
o.Popup =
{
// Méthode d'ouverture de la popup
__Open: function() {
// Si la popup n'existe pas, on en crée une avec le lien concerné puis
// on annule l'activation du lien dans la fenêtre principale.
if(!oNewWin || oNewWin.closed) {
var target = this.getElementsByTagName('a')[0].href;
oNewWin = window.open(target, '', 'top='+((screen.height/2)-275)+', left='+((screen.width/2)-300)+', width=600, height=550, resizable=yes' );
return false;
}
// Si la popup existe et qu'on clique sur une autre ligne possédant une classe 'line',
// on passe l'url à la popup, on lui redonne le focus puis on annule l'activation du
// lien dans la fenêtre principale.
else if(oNewWin && this.className.indexOf('line')!=-1) {
var target = this.getElementsByTagName('a')[0].href;
oNewWin.location.href = target;
oNewWin.focus();
return false;
}
// Pour les autres cas, on active le lien dans la fenêtre principale.
else {
return true;
}
},
}
// Propriétés Script de l'objet
o.Script =
{
// Initialisation de l'objet
Init: function() {
o.Link.ClickHandler();
}
}
// Chargement de l'objet au lancement de la page.
window.onload = o.Script.Init;
lightning.js
/****************************************************/
/****** Surbrillance des lignes d'un tableau ******/
/****************************************************/
// Création d'un objet
var p = new Object;
// Propriétés Over de l'objet
p.Over =
{
// Gestionnaire des événements onmouseover et onmouseout pour chaque ligne du tableau
OverOut: function() {
// On récupère l'ensemble des lignes dans un tableau puis
// on parcourt le tableau. Si une ligne possède une classe 'vinsDetails',
// on lance la fonction Lightning.
var pLines = document.getElementsByTagName('body')[0].getElementsByTagName('tr');
for( var i = 0 ; i < pLines.length ; i++ )
if( pLines[i ].className == 'line' ) {
pLines[i ].onmouseover = p.Lightning.__Colore;
pLines[i ].onmouseout = p.Lightning.__Uncolore;
}
},
}
// Propriétés Lightning de l'objet
p.Lightning =
{
// Méthodes de surbrillance des lignes
__Colore: function() {
this.className += ' lightning';
},
__Uncolore: function() {
this.className = this.className.replace(/ lightning/, '');
},
}
// Propriétés Script de l'objet
p.Script =
{
// Initialisation de l'objet
Init: function() {
p.Over.OverOut();
}
}
// Chargement de l'objet au lancement de la page.
window.onload = p.Script.Init;
Et dans ma page html:
<script type="text/javascript" src="scripts/lightning.js"></script>
<script type="text/javascript" src="scripts/popup.js"></script>
Modifié par <nicolas> (21 Oct 2007 - 14:00)