Accueil > > > REMPLACER LES "TITLE" PAR DES POPUPS
REMPLACER LES "TITLE" PAR DES POPUPS
Information sur la source
Description
Ce script permet de remplacer les attribut "title" sur tous les éléments de la page par une popup style infobulle. Il y a certainement des améliorations à apporter (dans la détection du navigateur par exemple, je n'ai fais que copier la fonction position() et la fonction getElementsByAttribute())
Source
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head>
- <title>Page de test</title>
- <style type="text/css">
- .popupCommentaire
- {
- position:absolute;
- left:0px;
- top:0px;
- visibility:hidden;
- border:1px solid #000000;
- background-color:#FFFFE1;
- width:auto;
- height:auto;
- padding: 3px;
- padding-left: 10px;
- padding-right:10px;
- }
- </style>
- <script language="javascript" type="text/javascript">
- /*********************************************************************
- * Robert Nyman *
- *********************************************************************
- * getElementByAttributes *
- * Sélection d'un tableau d'éléments en fonction de leur attributs *
- * *
- * Syntaxe : *
- * getElementByClass(objet, balise, attribut, <valeur>) *
- * *
- * objet : Objet de recherche (document.body par ex) *
- * balise : Balise de recherche ('*' pour toutes les balises) *
- * attribut : Attribut a rechercher *
- * valeur : Optionnel - Spécifier la valeur de l'attribut *
- *********************************************************************/
-
- /*
- Copyright Robert Nyman, http://www.robertnyman.com
- Free to use if this text is included
- */
- function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue) {
- var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
- var arrReturnElements = new Array();
- var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
- var oCurrent;
- var oAttribute;
- for(var i=0; i<arrElements.length; i++) {
- oCurrent = arrElements[i];
- oAttribute = oCurrent.getAttribute(strAttributeName);
- if (typeof oAttribute == "string" && oAttribute.length > 0) {
- if (typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
- arrReturnElements.push(oCurrent);
- }
- }
- }
- return arrReturnElements;
- }
- </script>
- </head>
- <body>
- <span title="un texte très long dans le but de créer un commentaire sur deux lignes pour tester l'utilisation du remplacement des attributs 'title' par une popup ceci afin de voir la ltotalité de ce texte
-
-
- En plus ca prends en compte les retours à la ligne" style="cursor:help; border-bottom: 1px dotted #000000;">un texte dans le style commentaire</span>
-
- <script language="javascript" type="text/javascript">
- var reg = new RegExp('\n', 'g');
-
- /************************************************************
- * position de la souris et du div contenant le commentaire *
- ************************************************************/
-
- var x = 0;
- var y = 0;
-
- function position(e) {
- x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
- y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
-
- x += 10;
- y += 10;
-
- var larg = 0;
-
- if (document.body)
- larg = (document.body.clientWidth);
- else
- larg = (window.innerWidth);
-
- if(x > (0.85 * larg))
- {
- x = 0.85 * larg;
- }
-
- window.document.getElementById('popupCommentaire').style.left = x + 'px';
- window.document.getElementById('popupCommentaire').style.top = y + 'px';
- }
-
- if (navigator.appName.substring(0,3) == "Net")
- document.captureEvents(Event.MOUSEMOVE);
- document.onmousemove = position;
-
- /***************************************
- * Remplacement des title par la popup *
- ***************************************/
-
- var eltsAvecTitle = getElementsByAttribute(document.body, '*', 'title')
-
- for(i = 0; i < eltsAvecTitle.length; ++i)
- {
- eltsAvecTitle[i].onmouseover = function()
- {
- if(!this.titleText)
- this.titleText = this.title.replace(reg, '<br />\n');
- this.title = '';
- window.document.getElementById('txt_popupCommentaire').innerHTML = this.titleText;
- window.document.getElementById('popupCommentaire').style.visibility = 'visible';
- }
-
- eltsAvecTitle[i].onmouseout = function()
- {
- window.document.getElementById('popupCommentaire').style.visibility = 'hidden';
- window.document.getElementById('txt_popupCommentaire').innerHTML = '';
- }
- }
- </script>
- <div id="popupCommentaire" class="popupCommentaire">
- <center id="txt_popupCommentaire"></center>
- </div>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Page de test</title>
<style type="text/css">
.popupCommentaire
{
position:absolute;
left:0px;
top:0px;
visibility:hidden;
border:1px solid #000000;
background-color:#FFFFE1;
width:auto;
height:auto;
padding: 3px;
padding-left: 10px;
padding-right:10px;
}
</style>
<script language="javascript" type="text/javascript">
/*********************************************************************
* Robert Nyman *
*********************************************************************
* getElementByAttributes *
* Sélection d'un tableau d'éléments en fonction de leur attributs *
* *
* Syntaxe : *
* getElementByClass(objet, balise, attribut, <valeur>) *
* *
* objet : Objet de recherche (document.body par ex) *
* balise : Balise de recherche ('*' pour toutes les balises) *
* attribut : Attribut a rechercher *
* valeur : Optionnel - Spécifier la valeur de l'attribut *
*********************************************************************/
/*
Copyright Robert Nyman, http://www.robertnyman.com
Free to use if this text is included
*/
function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue) {
var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
var arrReturnElements = new Array();
var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
var oCurrent;
var oAttribute;
for(var i=0; i<arrElements.length; i++) {
oCurrent = arrElements[i];
oAttribute = oCurrent.getAttribute(strAttributeName);
if (typeof oAttribute == "string" && oAttribute.length > 0) {
if (typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
arrReturnElements.push(oCurrent);
}
}
}
return arrReturnElements;
}
</script>
</head>
<body>
<span title="un texte très long dans le but de créer un commentaire sur deux lignes pour tester l'utilisation du remplacement des attributs 'title' par une popup ceci afin de voir la ltotalité de ce texte
En plus ca prends en compte les retours à la ligne" style="cursor:help; border-bottom: 1px dotted #000000;">un texte dans le style commentaire</span>
<script language="javascript" type="text/javascript">
var reg = new RegExp('\n', 'g');
/************************************************************
* position de la souris et du div contenant le commentaire *
************************************************************/
var x = 0;
var y = 0;
function position(e) {
x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
x += 10;
y += 10;
var larg = 0;
if (document.body)
larg = (document.body.clientWidth);
else
larg = (window.innerWidth);
if(x > (0.85 * larg))
{
x = 0.85 * larg;
}
window.document.getElementById('popupCommentaire').style.left = x + 'px';
window.document.getElementById('popupCommentaire').style.top = y + 'px';
}
if (navigator.appName.substring(0,3) == "Net")
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = position;
/***************************************
* Remplacement des title par la popup *
***************************************/
var eltsAvecTitle = getElementsByAttribute(document.body, '*', 'title')
for(i = 0; i < eltsAvecTitle.length; ++i)
{
eltsAvecTitle[i].onmouseover = function()
{
if(!this.titleText)
this.titleText = this.title.replace(reg, '<br />\n');
this.title = '';
window.document.getElementById('txt_popupCommentaire').innerHTML = this.titleText;
window.document.getElementById('popupCommentaire').style.visibility = 'visible';
}
eltsAvecTitle[i].onmouseout = function()
{
window.document.getElementById('popupCommentaire').style.visibility = 'hidden';
window.document.getElementById('txt_popupCommentaire').innerHTML = '';
}
}
</script>
<div id="popupCommentaire" class="popupCommentaire">
<center id="txt_popupCommentaire"></center>
</div>
</body>
</html>
Conclusion
Reste à faire :
- Une meilleure détection du navigateur plutôt qu'en passant par le navigator.appName (c'est caca, mais j'ai laissé quand même)
- Une compatibilité avec Opera (en fait, j'ai pas cherché à la faire, parce que le title qui est de base avec Opera fais exactement la même chose que ça, celui ci a été développé pour IE principalement)
Testé sous Firefox 2, IE6 et IE5.5 (il semblerait qu'il y ait un bug avec IE5.01)
Le fonctionnement voulu est aussi visible sous IE5.01 et sous IE4 (on voit la totalité du texte). J'ai pas essayé avec des textes vraiment très très long :D
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Changer le Titre d'un Popup [ par NaarGuileh ]
Bonjour à tous, Ma question est simple, je voudrais savoir comment changer dynamiquement le titre d'une fenêtre popup. J'ai essayé avec
generateur de popups defifante [ par soborne ]
voila jai une balise mais lorsque je le met dans les template sa marche pas alors que faire pouvez vous maider peut etre faut le modifier voici la bal
ouverture et fermeture d'une fenetre popup [ par sorcier_sly ]
Salut tout le monde, Je voudrais ouvrir une fenetre popup avec une certaine taille. J'utilise le code suivant :window.open('nomdelafenetre', height=50
Affichage d'un popup sans intervention humaine au préalable [ par phicarre ]
La plupart des exemples d'affichage de popup sont basés sur une action au préalable du client: formulaire-envoi-popup.J'ai une application e
POPUP [ par kyript ]
bonjour je cherche le moyen d'ouvrir un popup lors de l'arrivé sur la page qui ne serai pas pris en compte comme un popupc'est a dire que w
Aide avec une popup [ par iomega ]
Bonjour à tous, j'ai une page index.htm qui contient une liste déroulante avec des noms de ville et un bouton qui ouvre une popup nommé
centrer fenetre [ par kyript ]
sltet oui encore une question betej'ai ceci<a href="comment.php?id56=<?php echo $row_Recordset2['ident']; ?>" onclick='wind
POPUP image [ par TikoMoon ]
Bonjour,Je souhaiterais créer une popup aux dimensions d'une image. Il s'agit d'un défilement (sorte de diaporama) d'images créer
Anti Popup [ par flasher_13 ]
Bonjour à tous,depuis quelques jours je cherche un script qui me permettrais d'empêcher d'ouvrir la publicité (POPUP) qui s'ouvre au la
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|