Page 1 sur 1

lien "Code: Tout sélectionner"

Publié : 19 août 2015 20:06
par __sam__
Dans les zones contenant du texte "verbatim" via le tag: code dans ce forum, il y a un lien/ bouton: "Code: Tout sélectionner". Exemple:

Code : Tout sélectionner

test1
test2
Je l'utilise fréquemment pour copier/coller des codes.

Normalement la selection via le lien/bouton suivi d'un ctrl-c recopie l'intégralité de la zone telle qu'elle. Mais avec ma dernière mise à jour de firefox (40.0.2), il me fait précéder chaque ligne de 4 caractères espace dans le presse papier! Ca donne ceci:

Code : Tout sélectionner

    test1
    test2
C'est vraiment pas bon quand le code source n'aime pas les blancs en début de ligne (python, où même les symbole EOF de perl).

Observez vous ca chez vous avec votre browser?

De ce que je vois c'est une fonction JS qui appelle copyCode(this). C'est peut-être un bug avec phpbb et le tout dernier firefox.

Re: lien "CODE: tout selectionner"

Publié : 19 août 2015 20:10
par meridian
Je viens de faire le test, tout pareil. Ça le fait pas avec IE, ni Chrome

Re: lien "Code: Tout sélectionner"

Publié : 19 août 2015 20:59
par Daniel
Pareil pour moi avec Firefox 40.0.2. En revanche si on sélectionne manuellement tout le texte, il n'y a pas d'espaces ajoutés. Ce n'est pas très pratique, mais c'est un contournement possible du bug.

Re: lien "Code: Tout sélectionner"

Publié : 19 août 2015 21:19
par __sam__
Oui pour le contournement: il ne faut pas que le texte à copier soit trop long. Avec la sélection manuelle on a vite oublié une paire de lignes au début ou à la fin.

Le fait que le contournement existe indique que c'est la routine java-script copyCode() qui pose problème. Le fait que ca ne le fait pas sous IE ni Chrome (et dérivés: opéra), indique un code spécifique dans copyCode() pour FF.

Autre contournement possible: installer cet add-on: https://addons.mozilla.org/fr/firefox/a ... serprofile

Re: lien "Code: Tout sélectionner"

Publié : 19 août 2015 21:29
par __sam__
En utilisant le débugger de FF, j'ai trouvé dans forum_fn.js le code suivant:

Code : Tout sélectionner

function selectCode(a)
{
	// Get ID of code block
	var e = a.parentNode.parentNode.getElementsByTagName('CODE')[0];

	// Not IE
	if (window.getSelection)
	{
		var s = window.getSelection();
		// Safari
		if (s.setBaseAndExtent)
		{
			s.setBaseAndExtent(e, 0, e, e.innerText.length - 1);
		}
		// Firefox and Opera
		else
		{
			// workaround for bug # 42885
			if (window.opera && e.innerHTML.substring(e.innerHTML.length - 4) == '<BR>')
			{
				e.innerHTML = e.innerHTML + '&nbsp;';
			}

			var r = document.createRange();
			r.selectNodeContents(e);
			s.removeAllRanges();
			s.addRange(r);
		}
	}
	// Some older browsers
	else if (document.getSelection)
	{
		var s = document.getSelection();
		var r = document.createRange();
		r.selectNodeContents(e);
		s.removeAllRanges();
		s.addRange(r);
	}
	// IE
	else if (document.selection)
	{
		var r = document.body.createTextRange();
		r.moveToElementText(e);
		r.select();
	}
}
Il y a effectivement du code spécifique par browser...

Re: lien "Code: Tout sélectionner"

Publié : 20 août 2015 11:21
par __sam__
__sam__ a écrit :Autre contournement possible: installer cet add-on: https://addons.mozilla.org/fr/firefox/a ... serprofile
Ce matin AVAST vient de me le désinstaller en me signalant qu'il a mauvaise réputation (hum... allez savoir ce que ca veut dire une réputation sur internet)