Similar Posts
Drag&Drop de elementos en una tabla
Interesante Javascript que nos permite mover elementos (drag&drop) de las celdas de una tabla a otras, o incluso a otra tabla.

Drag and drop table content with JavaScript
Vía / Script & Style
Ajax Fancy Captcha: ajax interactivo con jQuery
No soy muy amigo de los CAPTCHAS (aunque son necesarios) y menos aún si no son accesibles, pero no quita que este captcha sea interesante y que a alguien le pueda gustar.

El CAPTCHA funciona de la siguiente manera: aparece unas imágenes aleatorias y unas instrucciones que indican que una de las imágenes debes ponerlo en una capa.
Ajax Fancy Captcha – jQuery plugin
Vía / WebAppers
Hapi.js + Vue.js ejemplo mínimo de frontend: formulario login
Esta parte es solo frontend, aún no está configurado para que interactúe con el servidor.
Lo más destacado de este ejemplo es el uso de vue-router, paquete que permite la realización de SPA de forma sencilla. Como la aplicación será gestionada por un único fichero (index.html), es necesario configurar el servidor de webpack para que gestione las URLs que acceden a otras partes de la aplicación para que no devuelva un error 404.
Esto es fácil, tan solo hay que añadir historyApiFallback y ponerlo a true en la configuración del servidor.
devServer: {
inline: true,
hot: true,
port: 9999,
historyApiFallback: true,
},
Si usas Apache u otro servidor deberás usar una configuración distinta.
Lógicamente habrá que instalar el paquete vue-router.
Vale, ya está todo instalado, ahora solo hace falta configurar vue-router para que acepte distintas URLs y que muestre distintos controladores según sea el caso.
Para ello creamos un fichero router.js que posteriormente añadiremos a nuestra instancia de Vue:
Es fácil de entender, importamos los distintos controladores y configuramos las rutas (‘/‘ y ‘/login‘), a las que les asignaremos el controlador correspondiente.
Para indicar a Vue que vamos a usar vue-router, debemos importarlo en la instancia de la aplicación:
import App from './components/App.vue';
import router from './router';
Vue.use( VueRouter );
new Vue( {
el: '#app',
router,
components: {
App,
},
render: ( c ) => c( 'app' ),
} );
El siguiente paso es modificar el controlador principal de la aplicación (App.vue) para que muestre la cabecera (que tendrá su propio controlador) y la vista principal de vue-router (<router-view>):
<template>
<div>
<v-header />
<router-view />
</div>
</template>
<script>
import header from '@/js/components/layout/Header';
export default {
name: 'App',
components: {
'v-header': header,
},
};
</script>
Como no soy diseñador, pues usaré Buefy (basado en Bulma) y Material Design icons (no sé por qué le tengo algo de manía a FontAwesome).
Existe un paquete especial para usar Material Design en vue (vue-material-design-icons), que para funcionar con Buefy necesitará usar la fuente de letras de Material Design (@mdi/fonts). Instalamos todo y ya estará todo listo para empezar a diseñar nuestra página.
La cabecera (<v-header>) mostrará el logo, el menú principal y otro secundario para loguearse. No explicaré ni las clases Bulma (que yo casi ni conozco) y cómo se muestra el menú al clickar en el burger icon, ya que estos tutoriales son para llevar yo un diario de cómo desarrollar una app web con Hapi.js y Vue.js.
El controlador de la cabecera nos quedará así:
<template>
<header>
<nav
class="navbar"
role="navigation"
aria-label="main navigation"
>
<div class="navbar-brand">
<a
class="navbar-item"
href="https://sentidoweb.com"
>
<img src="/assets/images/logo.svg">
</a>
<a
role="button"
class="navbar-burger burger"
aria-label="menu"
aria-expanded="false"
:class="{ 'is-active' : showNav }"
@click="showNav = !showNav"
>
<span aria-hidden="true" />
<span aria-hidden="true" />
<span aria-hidden="true" />
</a>
</div>
<div :class="[ { 'is-active' : showNav }, 'navbar-menu' ]">
<div class="navbar-start">
<router-link class="navbar-item" to='/'>Home</router-link>
</div>
<div class="navbar-end">
<div class="navbar-item">
<div class="buttons">
<router-link class="button is-light" to='/login'>Log in</router-link>
</div>
</div>
</div>
</div>
</nav>
</header>
</template>
<script>
export default {
data() {
return {
showNav: false,
};
},
};
</script>
Tan solo mencionar cómo vue-router gestiona la navegación, para ello hace uso de <router-link>:
<router-link class="navbar-item" to='/'>Home</router-link>
El resto del código es simplemente la página principal y el formulario “tonto”.
NitobiBug: debug para Javascript
NitobiBug es un script similar a Firebug que nos permite realizar debugs en nuestros scripts. Permite mostrar una ventana emergente con el contenido de objetos (diferenciando entre tipos), elementos DOM o simplemente mensajes.

Usarlo es tan sencillo como esto:
var myObject = {a:234523, something:'else', mylist:[32423,4556,'sdfs']}; nitobi.Debug.log(myObject);
Y para instalarlo solo hay que añadir el archivo js.
Una alternativa a Firebug, sobre todo para IE, pero me sigo quedando con Firebug.
Laboratorio: carga secciones de javascript de forma dinámica
Ayer fuà vÃctima de las librerÃas de Javascript, utilicé jQuery para facilitar el ajax y de paso para el DOM, cuando para esto último no hubiera sido necesario, tardé más en enterarme de cómo hacer un getElementById en jQuery que en hacerlo sin más.
Ante esto me pregunté si no serÃa mejor coger la librerÃa de jQuery y dividirla en funcionalidades, y cargar solo la parte que vayamos a usar. Para ello se me ocurrió transformar el .js en un .php y cargar las diferentes funcionalidades según unos parámetros de entrada. Veo que aNieto2K ha tenido una idea parecida y buenÃsima, pero mediante javascript. En el caso que yo comento se podrÃa hacer que si quiero Ajax, a parte también se carguen las funcionalidades del DOM que pueda usar la parte Ajax, transparente para el que use la librerÃa.
Para realizar esto, he tenido en cuenta dos cosas: obtener ciertos parámetros de entrada y según estos, cargar ciertas partes del script y usar un sencillo sistema de caché para no estar teniendo que crear en script online todo el tiempo.
Read More “Laboratorio: carga secciones de javascript de forma dinámica”
Nueva versión de FireBug
Ya hablamos en su dÃa de FireBug, una extensión que nos permite depurar nuestras aplicaciones web. La nueva versión tiene una gran novedad, “debuguear” Javascript. Ahora es posible poner puntos de ruptura, ejecutar el código paso a paso, inspeccionar variables, comprobar código, … Si antes ya era indispensable, ahora es totalmente obligatorio para cualquier desarrollador (vale, quizás me he pasado). A parte de el debugger hay otra serie de cambios que no dejan de tener importancia.
FireBug
VÃa / SitePoint