saut de ligne dans l'attribut title="ligne1
&am

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
newbee

saut de ligne dans l'attribut title="ligne1
&am

Message par newbee »

Bonjour,


Code : Tout sélectionner

title="ligne 1 & # 10;& # 13; ligne 2"  ( remarque, j'ai rajouté des espaces pour que les caractères spéciaux & et # ne soient pas interprétés par le forum )
[/b][/i]
Sous IE, génère un "tool tips" jaune de 2 lignes.

Par contre, FireFox affiche sur 1 ligne, avec des droles de caractères à l'endroit du saut de ligne. :cry:

Existe-t-il une solution pour afficher sur 2 lignes avec FF ?

Comme je teste le type de browser, je peux générer des codes différents pour FF et IE. Par contre, si vous connaissez une solution unique, c'est bien mieux ! :wink:

J'ai cherché en vain dans google, mais je ne dois pas avoir mis les bons mots clefs, car je n'ai pas trouvé de solution...

Merci :P
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Non il n'y a pas actuellement de solution, à part contourner le problème en utilisant des calques cachés qui apparaissent au survol (sur le même principe que les menus en CSS) ou des scripts qui récupèrent le contenu de l'attribut title pour en faire une "bulle" personnalisée.
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
newbee

Message par newbee »

Merci pour ta réponse. :? :?

Où peut-on faire des suggestions d'améliorations pour les prochaines versions de FF ? Crois-tu que ça en vaut la peine ?


J'ai regardé le nicetitles.js présent sur votre site.
J'ai réussi à le copier et configurer chez moi, mais le saut le ligne n'est pas mieux pris en compte...

Quelqu'un connait-il assez le JavaScript pour indiquer comment générer un saut de ligne dans ce type d'affichage Javascript ?

J'ai essayé \n\r, ou <br/> ou & # 10;& # 13; sans succès.. :(
Merci :D
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Non c'est un problème connu, il semble juste fort complexe à résoudre et les personnes familières avec cette partie du code sont très peu nombreuses. Plusieurs personnes extérieures ont déjà essayé et s'y sont cassé les dents (enfin, n'ont pas réussi à trouver une solution qui ne cassait pas autre chose si j'ai bien suivi).
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Benoit a écrit :(enfin, n'ont pas réussi à trouver une solution qui ne cassait pas autre chose si j'ai bien suivi).
Que casse PopupAltAttributes ? (ou plus précisément sa version modifiée "LongTitles") :?:
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

Je ne sais pas je ne comprends pas tout, une sombre histoire de fusion de marges je crois. Mais ça a l'air d'avoir bougé un peu récemment (voir https://bugzilla.mozilla.org/show_bug.cgi?id=228673 )

Ce n'est pas parce qu'un extension permet de faire quelque chose après coup qu'elle peut être intégrée comme ça dans le cœur de Gecko. Piro explique lui-même que sa solution est très dirty (dans le fichier attaché au commentaire 18).
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
newbie

FireFox - Javascript - DOCTYPE XHTML...

Message par newbie »

Bonjour,

Je progresse à petite vitesse sur la question...
Mon problème est d'afficher un Tool'Tips coloré lors du survol des liens, et je désire pouvoir formater et insérer des <br/> dans le texte du ToolTips,
avec une solution qui marche pour IE et pour FF...

En visitant le site http://repaire.net/, j'ai trouvé une implémentation qui m'intéressait.
L'introduction de < br/ > génère bien les sauts de lignes, dans IE et dans FF.

J'ai élagué le code, pour ne prendre que le nécessaire.
Ca a continué à marcher sous IE ( 6.0.2 xpsp2 ) et FF ( 1.0.7 )

J'ai ensuite converti la syntaxe <HTML> en <xhtml>, en ajoutant en entête :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
puis en transformant les majuscules en minuscules...
Je passe passe dans http://validator.w3.org/ sans erreur. Je me sens génial ! :P
Par contre, ça marche encore dans IE, mais plus bien dans FF.
Il me suffit d'enlever la première ligne <DOCTYPE... > et là, ça s'exécute bien aussi sous FF... :roll:

Dans FF, quand "ça marche pas", comprenez : le tool'tips coloré s'affiche en haut à gauche de l'écran, sans suivre les mouvements de la souris.

Bon, dans le Java que j'ai récupéré, voici les trucs louches que j'ai remarqués :
la fonction browser() ne teste pas explicitement le cas "firefox".
J'ai dupliqué/rajouté les 2 lignes opéra pour les adapter à Firefox :

Code : Tout sélectionner

    this.ff = (navigator.userAgent.indexOf('Firefox')>-1);
    if (this.ff){this.browser = 'ff'}
Autre problème potentiel, la fonction get_mouse(e) : cette fonction semble récupérer les coordonnées x,y de la souris :

Code : Tout sélectionner

    function get_mouse(e)    {
        var x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
        var y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
        skn.left = x;
        skn.top = y+20;
    }
Visiblement, elle teste le cas "NetScape" ? pour appliquer une formule ou l'autre, mais aucune des 2 formules ne semble marcher pour FF avec <DOCTYPE> ( mais ça marche sans <DOCTYPE> ... ) :?:

Quelqu'un peut-il me dire comment faire dans le Javascript de FF pour récupérer les événements de la souris ? :P

Du même tonneau, la fonction setOpacity() ne marche pas pour FF ( avec ou sans ligne DOCTYPE )
Quelle syntaxe proposeriez vous ?


Merci pour votre aide.
Si vous avez une explication sur pourquoi ma ligne <DOCTYPE> empêche de marcher...
Je suis débutant en xhtml... et encore plus en Javascript ! :oops:


Je donne en dessous, l'ensemble de mon code, pour que vous puissiez tester si vous ne me croyez pas...

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test PoperLink</title>

<!--
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
-->

<style type="text/css"  >
<!--

.popperlink {
	font-family: "Century Gothic", Verdana, Arial;
	font-size: 14px;
	font-weight: normal;
	color: #555555;
	background-color:#FF5A02; 
	VISIBILITY: hidden; POSITION: absolute
}
-->
</style>

</head>
<body onload="setOpacity('topdecklink','90');" >

<div class="popperlink" id="topdecklink"></div>

<p>


<script language="JavaScript" type="text/JavaScript">
<!--
function Browser(){
    this.name = navigator.appName;
    if ( this.name == 'Microsoft Internet Explorer') this.browser = 'ie';
    else if (this.name.match(/Netscape/)) this.browser = 'ns';
    else this.browser = this.name;
    this.version = parseInt(navigator.appVersion);
    this.ns = (this.browser=='ns' && this.version>=4);
    this.ns4 = (this.browser=='ns' && this.version==4);
    this.ns6 = (this.browser=='ns' && this.version>=5);
    this.ie = (this.browser=='ie' && this.version>=4);
    this.ie4 = (this.browser=='ie' && navigator.userAgent.indexOf('MSIE 4')>-1);
    this.ie5 = (this.browser=='ie' && navigator.userAgent.indexOf('MSIE 5')>-1);
    this.ie6 = (this.browser=='ie' && navigator.userAgent.indexOf('MSIE 6')>-1);
    if (this.ie5) this.version = 5;
    this.op5 = (navigator.userAgent.indexOf('Opera 5')>-1);
    if (this.op5){this.browser = 'op'}
    this.ff = (navigator.userAgent.indexOf('Firefox')>-1);
    if (this.ff){this.browser = 'ff'}
    this.dom1 = (document.implementation && document.implementation.hasFeature)?true:false;
    this.os = (navigator.platform)?navigator.platform:'unknown';
    if (this.ie){ this.language = navigator.userLanguage.substring(0,2).toLowerCase() } else if (this.ns || this.op5) { this.language = navigator.language.substring(0,2).toLowerCase() }
    this.toString = function(){ return '[object Browser]'}
    return this;
}
function setOpacity(objId, i){
    b = new Browser()
    if (b.ie){
        obj = document.all[objId]
        obj.style.filter = "alpha(opacity=" + i + ")";
    }
    else if (b.ns6){
        obj = document.getElementById(objId)
        obj.style.MozOpacity = i+'%'
    }
}

	domok = document.getElementById;
    if (domok)    {
        skn = document.getElementById("topdecklink").style;
        if(navigator.appName.substring(0,3) == "Net")
            document.captureEvents(Event.MOUSEMOVE);
        document.onmousemove = get_mouse;
    }
    function pop(size, msg)    {
	var content ="<table width="+size+" ><tr><td>"+msg+"<br/>browser=" + navigator.userAgent +"</td></tr></table>";
      if (domok)        {
              document.getElementById("topdecklink").innerHTML = content;
              skn.visibility = "visible";
              }
    }
    function get_mouse(e)    {
        var x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
        var y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
        skn.left = x;
        skn.top = y+20;
    }
    function kill()    {
        if (domok)
              skn.visibility = "hidden";
    }
//-->
</script>

<a href="#">
	<img   src="videoimages/tests2.jpg"
	name="Tests"
	onmouseover="pop( 300, 'Pour mieux choisir <br/>votre matériel <br/>venez sur mon forum ! ')"
	onmouseout="kill()"  alt="image inexistante" />
	</a>

<br/><br/><br/><br/><br/>

<a href="#" 
      onmouseover="pop( 300, 'Pour mieux choisir <br/>votre matériel <br/>venez sur mon forum ! ')"
      onmouseout="kill()" > 
      
	FORUM <br/>FORUM <br/>FORUM FORUM FORUM  </a>

</p>
</body>
</html>
newbee

Solution

Message par newbee »

Bon, j'ai fini par trouver une solution qui marche qui marche bien sous IE ( 6 - SP2 ) et FF ( 1.07 ) et certainement d'autres browsers...

Je donne la solution pour clore ce post, si ça peut servir à d'autres...

http://www.javascriptfr.com/code.aspx?ID=33164


Quand au problème du DOCTYPE, une explication se trouve ici :
http://forum.alsacreations.com/topic-5- ... refox.html
Bonjour,
En ajoutant la dtd, tu ajoutes une contrainte de rigueur, les "petites fautes" ne sont plus automatiquement corrigées ...
Dans ton code, tu mets :

objet.style.top=position;


Ce qui, vu ton code, fait par exemple objet.style.top=50; oui mais 50 quoi ???, cm, pixels, patates ???
Tu l'auras compris, il faut donc que tu rajoutes une unité de mesure pour que ton code fonctionne avec la dtd comme par exemple :

objet.style.top=position+"px";
Voilà qui résoud le problème et l'enigme !

J'espère que la solution pourra servir à d'autres.
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Re: FireFox - Javascript - DOCTYPE XHTML...

Message par calimo »

newbie a écrit :Bon, dans le Java que j'ai récupéré, voici les trucs louches que j'ai remarqués :
C'est pas du Java, c'est du javascript. Java c'est le plugin de Sun pour les applets qui mets 3 minutes à charger :lol:
newbie a écrit :la fonction browser() ne teste pas explicitement le cas "firefox".
J'ai dupliqué/rajouté les 2 lignes opéra pour les adapter à Firefox :

Code : Tout sélectionner

    this.ff = (navigator.userAgent.indexOf('Firefox')>-1);
    if (this.ff){this.browser = 'ff'}
Supprime toute détection de navigateur !

Il ne faut pas détecter le navigateur, mais ses capacités. En détectant le navigateur en fonction de son nom, tu ne fais que perpétuer ce pourquoi ce script ne fonctionne pas :roll:
newbie a écrit :Autre problème potentiel, la fonction get_mouse(e) : cette fonction semble récupérer les coordonnées x,y de la souris :

Code : Tout sélectionner

    function get_mouse(e)    {
        var x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
        var y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
        skn.left = x;
        skn.top = y+20;
    }
Visiblement, elle teste le cas "NetScape" ? pour appliquer une formule ou l'autre, mais aucune des 2 formules ne semble marcher pour FF avec <DOCTYPE> ( mais ça marche sans <DOCTYPE> ... ) :?:
Probablement parce que pour Netscape il y a un vieux script ne fonctionnant qu'avec NS 4.x. Raison de plus pour se passer définitivement de toute détection de navigateur en fonction de son nom.
newbie a écrit :Quelqu'un peut-il me dire comment faire dans le Javascript de FF pour récupérer les événements de la souris ? :P

http://dev.webnaute.net/BAS/Test-mouse/ ?
Ou alors peut-être ici : http://dev.webnaute.net/Applications/DOM-Compat/ :wink:
newbie a écrit :Du même tonneau, la fonction setOpacity() ne marche pas pour FF ( avec ou sans ligne DOCTYPE )
Quelle syntaxe proposeriez vous ?
  1. Pas de détection de navigateur. Détecte les capacités. Donc pas de if(b.ie) mais plutôt un if(obj.style.filter).
  2. -moz-opacity n'est certainement plus supporté. Utilise "opacity" (tout court). Ça marchera aussi sous d'autres navigateurs (sauf si tu détectes "Netscape" évidemment...)

    newbie a écrit :Merci pour votre aide.
    Si vous avez une explication sur pourquoi ma ligne <DOCTYPE> empêche de marcher...
Sans doctype tu es en "mode de compatibilité", donc le navigateur essaye de faire un peu n'importe quoi pour que ça fonctionne.
Mais comme c'est n'importe quoi c'est assez risqué :?

Donc, vire cette fonction Browser !!! :lol:
lpgc
Lézard à collerette
Messages : 259
Inscription : 16 juil. 2006, 01:02

Message par lpgc »

... je suis un peu sur le même problème ...
et pas trop envie de mettre du JS pour résoudre le problème :oops:

j'ai trouvé cette adresse :
https://addons.mozilla.org/fr/firefox/addon/1715

Le CR est interprété dans le paramètre title avec l' addon?

Ce genre d' addons ... Comment cela fonctionne ? ...
On peut trouver les sources de l' addon :?:


Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

lpgc a écrit :j'ai trouvé cette adresse :
https://addons.mozilla.org/fr/firefox/addon/1715
Tiens, on parle de mon extension :)
lpgc a écrit :Le CR est interprété dans le paramètre title avec l' addon?
Il n'y a pas de raison. Tout ce que fait cette extension c'est ne plus tronquer les infobulles trop longues !
lpgc a écrit :Ce genre d' addons ... Comment cela fonctionne ? ...
On peut trouver les sources de l' addon :?:
Une extension, c'est un fichier zip en fait, donc tout est dedans, ça fait office de code source comme une page web si on veut :)
Mais elle ne t'aidera pas à résoudre ton problème :roll:
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Google [Bot] et 4 invités