361 votes

Comment utiliser un retour chariot dans une infobulle HTML ?

Je suis en train d'ajouter des infobulles verbeuses à notre site et j'aimerais (sans avoir à recourir à un plugin jQuery de pointe, je sais qu'il y en a beaucoup !) utiliser les retours chariot pour formater l'infobulle.

Pour ajouter l'astuce, j'utilise le title attribut. J'ai fait le tour des sites habituels et j'ai utilisé le modèle de base de :

<a title='Tool?Tip?On?New?Line'>link with tip</a>

J'ai essayé de remplacer le ? avec :

  • <br />
  • &013; / &#13;
  • \r\n
  • Environment.NewLine (J'utilise C#)

Aucun des éléments ci-dessus ne fonctionne. Est-ce possible ?

0 votes

C'est assez délicat, mais il y a peut-être une solution de rechange. Changez tous les espaces de votre titre en espaces insécables. &nbsp; . Ensuite, mettez des espaces là où vous voulez que les lignes soient coupées. Il se peut que vous deviez aussi ajouter des &nbsp; caractères avant votre espace (saut de ligne).

332voto

porneL Points 42805

El dernière spécification autorise le caractère de saut de ligne, de sorte qu'un simple saut de ligne à l'intérieur de l'attribut ou de l'entité &#10; (notez que les caractères # y ; sont nécessaires) sont OK.

4 votes

Ce n'est pas supporté par Chrome mais par Firefox !

6 votes

J'ai essayé les deux &#10; y &#13; . &#13; ne respecte pas les "sauts de ligne" prévus dans la version 50.0.2661.94 (64 bits) de Chrome. &#10; fonctionne bien dans les versions actuelles de chrome, firefox et opera (toutes pour Ubuntu 64-bit) et internet explorer version 11.0 et quelques changements sur Windows.

0 votes

C'est particulièrement utile pour moi car j'essayais de faire cela sur l'éditeur de post de Wordpress.

316voto

Greg Points 132247

C'est tellement simple que vous allez vous en vouloir : il suffit d'appuyer sur Enter !

<a href="#" title='Tool
Tip
On
New
Line'>link with tip</a>

1 votes

@Halcyon, juste pour clarifier pour les autres lecteurs, les trois codes ci-dessus ne semblent pas être du HTML. Ils ressemblent plus à des séquences d'échappement de chaînes de caractères dérivées du langage C.

3 votes

@Sam Je ne comprends pas ce que vous voulez dire par là. \x0A (octet) est le code de caractère qui correspond à une nouvelle ligne. Idem pour \u000A (unicode). \n est également une nouvelle ligne.

13 votes

@Halcyon, j'ai essayé d'insérer ces séquences d'échappement dans un fichier title dans Firefox et Chrome, et ils étaient simplement présentés littéralement dans l'infobulle. Après coup, je me suis rendu compte que vous utilisiez probablement cette syntaxe pour communiquer les caractères (et non les séquences d'échappement) à utiliser. Mon commentaire vise à faire gagner du temps à d'autres personnes en les avertissant de ne pas essayer de mettre vos séquences d'échappement dans leur HTML afin qu'elles ne perdent pas de temps comme je l'ai fait.

85voto

Stefan Mai Points 9477

Essayez le caractère 10. Mais cela ne fonctionnera pas dans Firefox :(

Le texte est affiché (si tant est qu'il le soit) dans un format dépend du navigateur. Les petites fonctionnent sur la plupart des navigateurs. Les longues et le retour à la ligne fonctionnent dans IE et Safari (utilisez &#10; o &#13; pour un nouvelle ligne). Firefox et Opera ne supportent pas les nouvelles lignes. Firefox ne prend pas en charge prend pas en charge les longues infobulles.

http://modp.com/wiki/htmltitletooltips

Mise à jour :

Depuis janvier 2015, Firefox prend en charge l'utilisation de &#13; pour insérer un saut de ligne dans un fichier HTML title attribut. Voir l'exemple ci-dessous.

<a href="#" title="Line 1&#13;Line 2&#13;Line 3">Hover for multi-line title</a>

2 votes

+1. Si vous décidez d'utiliser un plugin jQuery, pour une accessibilité optimale, il doit lire son contenu à partir de l'attribut title et remplacer le saut de ligne par un caractère invisible arbitraire au moment de l'exécution.

0 votes

+1. C'est intéressant. Il y a toujours le problème de certaines UA qui coupent le titre quand il apparaît - FF2 si je me souviens bien, mais c'est moins un problème de nos jours.

3 votes

Depuis janvier 2015, Firefox prend en charge l'utilisation de &#13; dans un title pour insérer un saut de ligne.

66voto

Testé dans IE, Chrome, Safari, Firefox (dernières versions 2012-11-27) :
&#13;

Ça marche dans tous les cas...

0 votes

La première méthode (briser les lignes de code) semble plus simple, mais ne résiste pas aux auto-formateurs de programmes js-code.

0 votes

@Camilo Martin, newline et linefeed sont les mêmes sur toutes les plateformes. &#10; est le saut de ligne Unix tout comme le saut de ligne Windows. De même, &#13; est la nouvelle ligne pour les deux plateformes. Le site spec spécifie le caractère de saut de ligne (LF) qui est bien entendu &#10; sur les deux (toutes ?) plateformes.

2 votes

@matty Je ne suis pas sûr de vous comprendre - la chose correcte à utiliser semble être le système unix. LF (qui est en quelque sorte le saut de ligne standard dans tous les protocoles et outils), CR n'était utilisé que par les vieux Macs (et d'autres plates-formes obscures) et semble déplacé.

57voto

cprcrack Points 3040

Il convient également de mentionner que si vous définissez l'attribut title avec Javascript comme ceci :

divElement.setAttribute("title", "Line one&#10;Line two");

Il ne fonctionne pas. Vous devez remplacer ce 10 décimal ASCII par un A hexadécimal ASCII de la manière dont il est échappé avec Javascript. Comme ceci :

divElement.setAttribute("title", "Line one\x0ALine two");

0 votes

@MaxNanasy D'accord, et ils sont équivalents ( \n signifie le code de caractère 10 de toute façon)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X