C'est un problème que j'avais rencontré sur les forums Web et que je n'avais pas réussi à résoudre avec les outils habituels, pourtant nombreux et performants, de Mozilla (bien que ce soit peut-être possible avec la feuille de styles CSS perso). Avec les pourcentages, les dimensions des posts des forums s'adaptent généralement à l'écran et n'obligent pas à des déplacements horizontaux incessants comme il adviendrait si les longueurs des lignes étaient plus importantes que les dimensions de l'écran. Mais voilà, lorsqu'un forumeur inscrit une URL dont le texte est plus long que la largeur de l'écran, ça casse tout. Souvent tout le tableau suit et même les autres posts ont alors des lignes de texte qui dépassent la largeur de l'écran. La consultation devient dès lors très pénible.

Et bien en suivant des liens dans la blogosphère, j'ai rencontré un bookmarklet qui apporte un début de solution. Né d'une discussion sur les forums anglophones de MozillaZine, Motohicko parvient à forcer une page HTML avec un énorme lien à s'ajuster à votre écran. Force Fit Screen : à glisser avec la souris vers votre barre de signets personnelle ou à enregistrer dans vos bookmarks. Rappel : Un bookmarklet est un signet/favori, contenant des instructions en JavaScript, qui commande une action ou une suite d'actions du navigateur, en local, sur la page courante.

javascript:var longurishouldwrap = { aZwsp:null, run:function() {this.aZwsp = document.createElement('span'); this.aZwsp.setAttribute('style','margin-right:-0.5ex;'); this.aZwsp.appendChild( document.createTextNode(' ') ); var aBodyElement = document.getElementsByTagName('body')[0]; this.sub( aBodyElement );}, sub: function (aNode) { if( aNode.nodeName == '#text' && aNode.nodeValue.length ) { var splittedText = aNode.nodeValue.split( /\// ); if( splittedText.length > 1 ) { var newTextNode = document.createElement( 'span' ); for( var i=0; i<splittedText.length-1; i++ ){ newTextNode.appendChild( this.aZwsp.cloneNode(true) ); newTextNode.appendChild( document.createTextNode( splittedText[i]+'/' ) ); } newTextNode.appendChild( document.createTextNode( splittedText[splittedText.length-1] ) ); aNode.parentNode.replaceChild( newTextNode, aNode ); } } else { for(var i=0; i<aNode.childNodes.length; i++) { this.sub( aNode.childNodes.item(i) ); } }}}; longurishouldwrap.run();

MozillaZine Forums, Request: Force Fit Screen, 18-22 nov. 2003

Lu dans jedbro, Extension Rollout (Jan-04), 23 janv. 2003, Jed