Insisto, insisto, insisto: Lo mejor es agregarlos a la plantilla y utilizar la menor cantidad de archivos externos. De todas formas, la sintaxis correcta para agregar un script contenido en un archivo externo es la siguiente:
<script src='URL_archivo.js' type='text/javascript'></script>
<script src='URL_archivo.js' type='text/javascript'/>
La extensión de esos archivos es .js pero eso, sólo es una convención, en realidad, puede ser cualquier otra o no tener ninguna en absoluto, basta que sea un archivo de texto plano sin formato y que el contenido sea un código válido y no contenga etiquetas HTML.
El atributo type es obligatorio y el atributo language que muchas veces se ve es innecesario a menos que el lenguaje del archivo no sea JavaScript. Eventualmente, se agrega un atriburto charset si el script contiene caracteres especiales:
<script src='URL_archivo.js' type='text/javascript' charset='utf-8' />
Muchos de ellos DEBEN ser incluidos en el HEAD porque deben ser ejecutados de manera inmediata pero, esto no ocurre siempre. Algunos, DEBEN ser ejecutados después que la pagina ha sido cargada y para eso existen instrucciones específicas:
<script type='text/javascript'> window.onload=function() { // esto se ejecutará cuando la pagina haya termiando de cargarse } </script>
Una regla elemental es la siguiente: No podemos ejecutar un script que modifique nuestra página si eso que vamos a modificar aún no se ha creado.
Una página web se crea de manera secuencial, línea por línea tal cual se ve en el código fuente así que debemos estar atentos a ese orden. Por ejemplo:
<script type='text/javascript'> getElementById('ejemplo').style.display='none'; </script> <div id='ejemplo'> ....... </div>
Esto sería lo correcto:
<div id='ejemplo'> ....... </div> <script type='text/javascript'> getElementById('ejemplo').style.display='none'; </script>
Por el contrario, scripts como los de Twitter y Tumblr es conveniente ubicarlos al final de la página, antes de </body> para que se ejecuten después que la página ha sido cargada y de esa manera, tener el blog funcionando aún cuando los datos de esos servicios no sean accesibles. Sería bueno que Blogger hiciera lo mismo con algunos de sus scripts como los que manejan los comentarios, el buscador o los seguidores.
A diferencia del HTML, el lenguaje JavaScript es sensible a las mayúsculas y minúsculas así que ese detalle debe ser tenido muy en cuenta a la hora de darle nombre a las variables y las funciones.
Aunque hay excepciones, cada línea de código debe terminar con un punto y coma. Es una buena práctica acostumbrarse a hacerlo.
No es usual utilizar esto pero, los scripts externos también pueden cargarse usando código JavaScript; para esto, hay muchos métodos:
<script type='text/javascript'>
window.onload=function(){
if(!document.getElementById || !document.createElement){return;}
var nuevoScript = document.createElement('script');
nuevoScript.type = 'text/javascript';
nuevoScript.src = 'URL_archivo';
document.getElementsByTagName('head')[0].appendChild(nuevoScript);
}
</script>
<script type='text/javascript'> function loadScript(src) { nuevoScript = document.createElement( 'script' ); nuevoScript.src = src; nuevoScript.type = 'text/javascript'; head = document.getElementsByTagName( 'head' )[0]; head.appendChild(nuevoScript); } </script>
<script type='text/javascript'>
loadScript('URL_archivo');
</script>
<script type="text/javascript">
//<![CDATA[
....... aquí va el código .......
//]]>
</script>
Es importante saber que un script puede tener un código que se ejecuta apenas es cargado o bien, una función que se ejecuta sólo cuando la invocamos. Por ejemplo:
<script type='text/javascript'> alert ('un mensaje'); function ejemploFuncion() { alert ('otro mensaje'); } </script>
<script type='text/javascript'> ejemploFuncion(); </script>
<a href='javascript:void(0);' onclick='ejemploFuncion();"> click </a>
En Blogger, el atributo href es complicado de resolver. Si bien siempre es mejor que tenga un destino real (una dirección) para que funcione aún cuando el visitante tenga JavaScript desactivado, no siempre podemos hacerlo.
Otra forma de llamar a una función es esta:
<a href='javascript:ejemploFuncion();"> click </a>
Tampoco es necesario que la etiqueta sea un enlace, pude usarse casi cualquier otra:
<span onclick='javascript:ejemploFuncion();"> click </span>
17 comentarios:
Si con referenciar te refieres a que sean archivos externos, es verdad pero, eso tiene sentido cuando tenemos un servidor propio, en ese caso, el acceso es rápido y el archivo se cachea. Sin embargo, Blogger no ofrece un servidor propio para los blogs por lo tanto, al estar alojados en otro servidor, el acceso termina siendo más lento además de provocar trastornos como estar constantemente buscando uno.
La única excepción a esto son las librerías API de Google ya que esas si son cacheadas por el mismo Google y en ese caso, conviene usarlas en lugar de alojarlas nosotros.
Hola, JMiur, te cuento, acabo de instalarme el Explorer8 y no consigo entrar a determinadas páginas, ni mi blog, ni el de Rosa, ni Pizcos.... Con el tuyo me pasa una cosa curiosa, puedo acceder a la página principal, pero no a las de entradas individuales.
El mensaje que me aparece es el consabido:"Internet Explorer no puede abrir el sitio de http://xxxxxxx. Operación anulada."
No entiendo, porque si la cosa ya estaba solucionada con el 8, porqué sigue pasando... a ti no te ocurre? Se puede hacer algo? esperar?
Un saludo y gracias de antemano!!
Iván.
No, amigo, no veo que pase eso. Vengo usando IE8 hace tiempo sin mayores inconvenientes ¿Has revisado la configuración? No se me ocurre cuál exactamente, hablo en voz alta.
Creo que de no encontrarse el problema habría que reinstalarlo porque es muy raro que todos los dominios te muestren un error y un error tan grave como ese.
¡hola JMIUR!...madrecita querida: con tanto código, scrips tengo la 'capocha' (cabeza) dada vuelta...que goce usted de un día bello!!!
Malina:
En realidad, el nombre debe verse a la drecha pero, como se pone un ancho demasiado grande, no entra y aparece abajo a la izquierda. Sacando el ancho, se debería resolver y acomodarse correctamente:
.commenttext {
float:right;
width:500px;
}
Borra eso en negrita.
Una pregunta fuera del tema del JavaScript ... cuantas entradas se pueden publicar en blogger ??? porque llevo 10 meses con mi pagina y ya tengo 250 artículos publicados y no se si blogger tiene un limite de entradas o algo parecido
Por Favor Responde
www.GaitaZuliana.com.ve
Muy bien, Malina, me alegro :D
Adrián: No hay límites en la cantidad de entradas. Puedes tener tantas como quieras.
Muy buenos datos maestro, siempre actualizando para recordar lo que no debemos olvidar :)
Gem@: En Blogger aprendemos a fuerza de golpes :D
Gracias por responder ahora puedo estar tranquilo...
y como decían en otra pagina:
"en Blogger la mitad es misterio y la otra mitad es intuición" :D
Jajajajaja. Pués si, esa es una verdad absoluta :D
Hola...una pregunta algo relacionada:
Yo rediriji mi blog a mi dominio personal que es .com.ar y ahora no me anda ningun JavaScript...sabes por que???
Gracias
www.luckitas.com.ar
No hay motivos para eso. Por ejemplo, el script digitalclock funciona perfectamente lo mismo que otros scripts internos de Blogger. Los otros, no podría decirte porque no sé si funcionaban antes o cómo lo hacían.
Eso no sería asincrónico, sólo se cargarían todos juntos. Asincrónico es cuando el resto de la página se sigue cargando mientras se cargan simultánemamente los scripts cosa que no es nada sencillo de hacer:
cargar Javascript asincronamente
más técnicas para cargar Javascript asincronamente
alguno sabe que puedo hacer para javascript no me deshabilite el boton enviar al intentar validar un formulario??? le agradeceria en el alma a quien me pueda ayudar :)
Dependerá de lo que estás haciendo; habría que verlo.
¿Quiere dejar un comentario?
recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...
Nota: sólo los miembros de este blog pueden publicar comentarios.
Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.
Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...