Cristalab

Javascript no intrusivo, CSS y PHP

Por: frenadoll + 27.11.2006

Últimamente está en boca de mucha gente el concepto "Unobtrusive Scripting", así que voy a explicar este concepto lo más brevemente posible y a mostrar un par de trucos para llevarlo a cabo:

Un script no intrusivo debe cumplir lo siguiente:

Los desarrolladores sabemos que romper con el hábito es a menudo difícil, pero en el mundo web, la separación puede ser buena. Veamos que significa la separación cuando hablamos de desarrollo web:
  1. Estructura HTML -> "Qué significa"
  2. Presentación CSS -> "Cómo se muestra"
  3. Comportamiento Javascript -> "Qué hace?"

Podemos englobar el punto 1, 2 y 3 en una burbuja cada uno y de esta forma obtener lo que llaman "Las tres capas". Así diremos que cada página web necesita una capa de HTML estructural; sin HTML, no hay página. Sin embargo, las capas de CSS y Javascript son opcionales.

¿Por qué debo separarlos? Sin duda hay múltiples beneficios al separar cada concepto. La idea básica de la separación de la presentación y la estructura es asegurarse de que el HTML define la estructura y solo ésto. Toda la presentación se define en CSS así como el Javascript es definido aparte. Solo así conseguiremos un marcado limpio y funcional 100% sin nada más de por medio.

Por lo tanto, no deberíamos definir más funciones dentro de etiquetas <script>, ni deberíamos asignar eventos tales como onclick, onmouseover en pleno HTML. Y, por supuesto, ni un enlace más del tipo "javascript: hazAlgo();"

Toda la ayuda necesaria la encontraréis en la red, aquí van algunos enlaces:

Para finalizar quería recalcar dos prácticas (en realidad es una sola dividida en dos) que suelo usar en mis proyectos para hacer todo esto más sencillo. Cuando necesitamos pasar variables que vienen desde el lado del servidor para que ejecuten algún script nos encontramos con que en un fichero .js no podemos escribir por ejemplo PHP. La forma de lograr pasar esas variables a nuestro fichero es muy sencilla, la muestro en un ejemplo:

Archivo "variables.js.php"

Código :

<?php 
    header("content-type: application/x-javascript");
    // Paso de variables PHP a Javascript
    echo 'var lang="' . $lang . '";';
    echo 'var menu="' . $menu . '";';
    echo 'var opcion="' . $opcion . '";';
    echo 'var cabecera="' . $cabecera . '";';
    echo 'var claim="' . $claim . '";';
?>

Cómo incluirlo en el HTML:

Código :

<script type="text/javascript" src="../code/variables.js.php"></script>

Por supuesto podemos pasar las variables por GET:
...variables.js.php?var1=valor1&var2=valor2

Y listos para usar esas variables en nuestros scripts.

En un proyecto me encontré con el problema de tener que reemplazar algunos encabezados HTML por imágenes con textos, cosa muy habitual por diseñadores odiosos Latigo . De manera que separé esas pocas imágenes en carpetas por cada idioma. La ruta quedaba como:
/es/img/imagen.jpg

Para no tener que usar un selector, id o clase para cada titulo por cada idioma, hice lo siguiente:

Código :

<?php
    header("content-type: text/css");
    // backgrounds CSS
    echo
        'h2#info_corp {'.
        'background: #989898 url(../' . $lang . '/img/home_info_corp.png) no-repeat left top;'.
    '}'.

Como veis con la variable $lang simplemente cambio la carpeta donde está la imagen coincidiendo con el idioma. Así los encabezados serían los adecuados.

Etiquetas php css javascript

Comentarios | Enviar un comentario
Yo solía utilizar el sistema, claro que no sabía que llevaba ese nombre. Yo cambiaba dinámicamente el diseño CSS mediante PHP de acuerdo a ciertas variables. Interesante tu artículo Sonrisa
Por: dave73
Excelente articulo, y aprovechando el tema, existen utilerias que nos pueden ayudar a facilitarnos un poco el manejo de nuestros js para no tener tanto codigo amontonado..

Una de las funciones que uso para pasar variables entre paginas y cacharlas en mis funciones de javascript la encontre aqui:

http://www.codeproject.com/jscript/jscriptquerystring.asp

Me ha servido mucho ya que no es necesario tener un lenguaje de servidor para cachar las variables.. Sonrisa
Por: Darky_blog
Bueno, según veo esto es útil porque separa las variables de la URL. Pero a veces las variables no vienen de ahí, si no de Base de Datos por ejemplo y/o de PHP, entonces hay que convertirlas a javascript.
Por: frenadoll
Excelente articulo....
Por: Suriv_blog
Me encanta la forma en como lo haz descrito, aunque olvidaste mencionar el DOM scripting, pero bah! la idea es la misma.

Bien hecho Mago, me encantaría seguir viendo este tipo de artículos en clab.
Por: neojp_blog
Hola necesito meter una variable javascript en la siguiente linea de html, pero primero copiarla a una variable php

<link href="<?php echo $mosConfig_live_site;?>/templates/<?php echo $mainframe->getTemplate(); ?>/css/VARIABLE" rel="stylesheet" type="text/css" />

donde:

VARIABLE = template_css.css

Alguien podría ayudarme?
Por: Samantha_blog
por favor dave73 me puedes decir como hacias eso paso a paso? necesito hacerlo yo y no se como. Gracias y muy bueno el articulo
Por: merce_blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.