Página 1 de 1

Problema [BBCODE] [code][/code] con Firefox 4.0.1

Publicado: 17 May 2011, 00:36
por picaron
Hola a todos.

Tras buscar y no encontrar nada al respecto, me he decidido a pedir vuestra ayuda pues tengo el siguiente "problemilla" en mi foro.

Usando Firefox 4.0.1 en XP, cuando doy a "Seleccionar Todo" en el texto de un y lo copio al portapapeles, da igual donde lo pegue, Bloc de Notas o en la propia edición de un mensaje, siempre me añade al comienzo de cada linea 4 espacios.

Con IE, Google Crome y Safari, sin embargo, ¡¡copia el texto de forma correcta!!.

Y lo que mas me extraña del tema, es que si esto lo hago en este foro (con el Firefox) si que me funciona correctamente.

Evidentemente mi foro debe de tener algún fallo.
(El fallo NO es de mi PC, porque lo he probado en dos PC's mas.. y hace exactamente lo mismo)

Aqui lo podeis comprobar:
http://www.ascensoristas.net/viewtopic. ... 545#p32545

Aqui he visto que a alguien mas le ha sucedido, pero no he visto ninguna solucion al tema.

Agradeceré de corazón vuestra ayuda al respecto.

Un saludo.

Re: Problema [BBCODE] [code][/code] con Firefox 4.0.1  Tema Solucionado

Publicado: 17 May 2011, 13:50
por picaron
Bueno, pues me auto-contesto yo, porque he encontrado el fallo.

Salvo error u omisión por mi parte, se trata de un BUG de la plantilla prosilver.
Concretamente en la "function selectCode(a)".

En el archivo original ../styles/prosilver/template/forum_fn.js incluido en la Versión 3.0.8 por phpBB-Es Paquete en Español 3.0.8 viene incluido este código.

Codigo Original:

Código: Seleccionar todo

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();
	}
}
He reemplazado el mismo por este otro y se ha solucionado perfectamente el error.

Codigo Reemplazado:

Código: Seleccionar todo

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();
			try{
				r.setStart(e.firstChild, 0);
				r.setEnd(e.lastChild, e.lastChild.textContent.length);
			}catch(err){
				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();
	}
}
Un saludo a todos.
:cerveza:

Re: Problema [BBCODE] [code][/code] con Firefox 4.0.1

Publicado: 17 May 2011, 14:04
por Alorse
WoW, picaron gracias por reportarlo, y donde encontraste la solución, como hiciste para saber que esa era la causa?

Re: Problema [BBCODE] [code][/code] con Firefox 4.0.1

Publicado: 17 May 2011, 15:59
por picaron
Hola Alorse, pues la verdad que ha sido aplicando la lógica y con unas pocas horas de tesón.

Como dije en mi peticion de ayuda en este hilo, lo que me extrañaba es que en este foro si funcionaba bien.

Me he estado peleando horas con el código de los archivos

bbcode.html
colours.css
content.css

Pues me di cuenta de que en mi foro, el HTML que arroja la seleccion del texto de un [ code ] era diferente a la que arroja este foro...

Codigo HTML en mi foro:

Código: Seleccionar todo

<code>[font=Arial Black]Texto[/font]</code>
Codigo HTML en este foro:

Código: Seleccionar todo

<pre>[font=Arial Black]Texto[/font]</pre>
Y pensaba que los tiros iban por los <code> y <pre>, pero no... :cry:

Ojeando el código de bbcode.html me centre en la llamada onclick a la "function selectCode(a)"

Código: Seleccionar todo

<!-- BEGIN code_open --><dl class="codebox"><dt>{L_CODE}: <a href="#" onclick="selectCode(this); return false;">{L_SELECT_ALL_CODE}</a></dt><dd><code><!-- END code_open -->
<!-- BEGIN code_close --></code></dd></dl><!-- END code_close -->
Entonces es cuando me di cuenta de que esta función es la que verifica la versión de explorador y.....

Se me encendió la bombilla... :ok:

mmmmm... en http://www.phpbb-es.com funciona bien... ¿¿¿La function selectCode(a) suya sera igual que la mia???...

Manos a la obra, entro a http://www.phpbb-es.com, boton derecho "Ver codigo fuente de la pagina" localizo

Código: Seleccionar todo

<script type="text/javascript" src="http://www.phpbb-es.com/foro/styles/phpbbes/template/forum_fn.js"></script>
Click en http://www.phpbb-es.com/foro/styles/php ... orum_fn.js y....

¡¡¡ VOILA !!!

Aqui mismo esta la solucion... :cerveza:

Osea, que el BUG existe, pero vosotros lo teneis ya solucionado... :chulo:

Un Saludo.
:cerveza:

Re: Problema [BBCODE] [code][/code] con Firefox 4.0.1

Publicado: 17 May 2011, 16:13
por Alorse
picaron :bravo:, no tienes idea de todo lo que me alegra que los usuarios puedan encontrar las soluciones, significa que han aprendido algo leyendo e indagando, gracias por ser mas explicito al dar la solución.
Un saludo.

Re: Problema [BBCODE] [code][/code] con Firefox 4.0.1

Publicado: 17 May 2011, 16:30
por leviatan21
picaron : en este foro está solucionado porque tenemos instalado el MOD

Código: Seleccionar todo

 enhancements[/b][/url] y parte de los cambios que realizaste son códigos de ese MOD  :mrgreen: 

Y como dice el compañero Alorse, felicidades por haberlo solucionado tu solo  :cerveza:

Re: Problema [BBCODE] [code][/code] con Firefox 4.0.1

Publicado: 17 May 2011, 18:43
por picaron
¡¡¡ Vaya...jorobaaa !!! Con lo feliz que estaba yo con mi proceso de ingenieria inversa... :lee :mrgreen: :mrgreen:
:lol: :lol: :lol:

Gracias por vuestros comentarios, pero es que desconocía este MOD... ¡Y mira que busque sobre este tema...!
En fin, ya lo he instalado, porque evidentemente el MOD es mas completo que mi solución... :cry:

Lo que si que no termino de entender es como siendo un MOD para corregir un BUG en el año 2009 cuando estaba liberada la version 3.0.4, aun no se ha implementado en la 3.0.8.

¡¡ Todo el que hoy haga una instalación limpia de phpbb3 3.0.8 tendrá este pequeño fallo !!
... hasta que se encuentre con este MOD, claro esta...

Lo dicho, gracias por vuestros comentarios y un gran saludo.

:cerveza: