Iniciados los apuntes de Javascript en el wiki.
Alerta:
Post ñoño sobre mis peripecias para implementar el coloreo de sintaxis en el
blog.
Si alguien
se ha paseado por el blog en algún post que tenga código fuente podrá darse
cuenta que le agregué un estilo diferente a los listados de código, un marco y
un color de fondo, pero además si los ve usando Fire Fox o algún otro navegador
basado en Gecko (realmente deberÃa de ser que soporte XMLHttpRequest ) podrás
darte cuenta que tienen coloreo de sintaxis (Syntax Highlighting), mi idea inicial fue no hacer un
hack o mod muy grande para bMachine como lo he hecho en otras ocasiones, si no
construir un modulo que me pueda servir para cualquier otro sistema, asà que
voltee los ojos sobre JavaScript, que incluyendo solo el archivo .js en
cualquier página y siguiendo un estilo en las etiquetas <code> del post
fuera suficiente para que se haga el coloreo, y sÃ, conozco los riesgos que
muchas veces se han discutido sobre si el cliente no tiene activo el
JavaScript, para esto el script degrada bien sin que el contenido se dañe, como
no querÃa reinventar el hilo negro busque en el Web alguna buena opción que con
pequeños cambios me pudiera ayudar con lo que deseaba, asà que encontré en el
Weblog de Simon Willison un post titulado “Syntax Highlighting with
Javascript” donde presentaba un ejemplo de como lo habÃa hecho, el único
detalle que tiene su script es que solo colorea CSS y HTML por lo que faltaba
el coloreo de lenguajes más complejos como el PHP por ejemplo, entonces me encontré
con el dilema de que necesitaba tecnologÃa de servidor para realizarlo de una
manera más eficiente, por lo que decidà hacer mi primer prueba seria del uso de
XMLHttpRequest (aka AJAX), entonces seguÃa buscar la tecnologÃa adecuada para
el coloreo de otros lenguajes de programación, aunque PHP tiene su
highlight_string() yo querÃa algo que funcionara con más lenguajes, por lo que
llegue a Beautifier y su “Flexible Syntax Highlighting“, después de
jugar un rato con su código que es fácil de entender, le codifique algunos
cambios como quitar todas las etiquetas <font> y sustituirlas por
<span> y cambiarle los colores entre otros detallitos, ya tuve el código
que deseaba usar para colorear los códigos que no abarcaba lo anterior que
tenia, de ahà en adelante fue pelear un poco con AJAX (con cosas como que debe
de estar el PHP que colorea y el HTML que lo llama en la misma carpeta del
servidor si no me generaba error de permiso denegado) logré tener un ejemplo
funcional para todos los navegadores que soportan AJAX, por lo que llegó el
momento de implementarlo en el blog (osea incluir el archivo JS en la cabecera)
para mi sorpresa IE genera un error y no muestra nada, realmente no se que
pueda estar pasando y no he tenido tiempo de depurar (aunque no se porque si
funciona en mis pruebas ) por lo desactive la opción si detecta un navegador IE
hasta que sepa que puede estar pasando.
Continuando con la sección de JavaScript, ahora pondré un ejemplo de como enviar un formulario sin necesidad de intervención del usuario (ahora el código del servidor será ASP, para no limitarlo a un solo lenguaje).
index.html
<html>
<head>
<title>Prueba</title>
<script language="JavaScript"></script>
</head>
<body>
<form name="frmEnviar" method="post" action="">
<input type="hidden" name="variable1" value="Hola">
<input type="hidden" name="variable2" value="Hello">
</form>
<script language="JavaScript">
redi();
</script>
</body>
</html>
accion.asp
<%=request.Form("variable1" ) & "<br />" &
request.Form("variable2" )%>Hoy necesitaba que se incluyera una página PHP en un archivo HTML simple
(extensión .htm) para ser más expecifico necesitaba generar una
función JavaScript para que el cliente lo entendiera sin ningun problema
(cosa que si fuera un .php solo bastarÃa con incluir la instrucción
include() ).
Despues de navegar por un rato logre hacer que funcionara, es solo cuestion de
jugar con los contenidos MIME y el JavaScript, veamos.
index.htm
<html>
<head>
</head>
<body>
<script src="pagina.php" type="text/javascript"></script>
</body>
</html>pagina.php
<?php
header("Content-type: application/x-javascript" );
$h="Hola";
echo "alert("".$h."" )"."
";
?>
De esta forma al ejecutar el index.htm obtenemos un mensaje de hola.
Nota.- El archivo PHP se encuentra en un server que si soporta PHP.