Mostrando entradas con la etiqueta javascript. Mostrar todas las entradas
Mostrando entradas con la etiqueta javascript. Mostrar todas las entradas

lunes, 29 de marzo de 2010

Emular las pseudoclases de CSS con Javascript

A diferencia de la técnica .htc que permite emular pseudo clases introduciendo javascript en CSS. Esta liviana, accesible, multinavegador, y estándar técnica conocida como The Suckerfish Shoal es una libreria en Javascript de apenas 2Kb que te permite emular las siguientes pseudo clases:



Veamos una muestra de lo que se puede lograr con el Suckerfish Shoal. Agregamos en nuestro javascript lo siguiente:

Código :

suckerfish(sfHover, "LI", "nav");
suckerfish(sfHover, "div", "welcome");

Esto buscará la etiqueta con id #nav y le agregará una clase .sfhover a cada etiqueta
  • cuando el mouse esté encima de él (hover). Mientras que en el segundo ejemplo agregará una clase .sfhover a cada etiqueta div que esté dentro de #welcome.

    Por lo tanto, podemos escribir un código CSS asi.

    Código :

    #nav li:hover, #nav li.sfhover { border:1px solid red; }
    #welcome div:hover, #welcome div.sfhover { background-color:black; color:white; }

    De la misma manera, se puede lograr con cada uno de las pseudo clases arriba mencionadas.

    Código :

    suckerfish(pseudo_clase, "etiqueta_destinada", "etiqueta_padre");

    Solo cambiemos la pseudo_clase por la que sea necesaria: sfHover, sfFocus, sfActive, sfTarget.


    http://www.htmldog.com/articles/suckerfish/

    Digg Technorati Delicious StumbleUpon Reddit BlinkList Furl Mixx Facebook Google Bookmark Yahoo
    ma.gnolia squidoo newsvine live netscape tailrank mister-wong blogmarks slashdot spurl

  • domingo, 28 de marzo de 2010

    Visual Basic 6.0: Validar un número de tarjeta de crédito (ISO 2894)

    En una aplicación de comercio electrónico o una aplicación que necesite validar el número de una tarjeta de crédito, se puede hace uso del algoritmo ISO 2894. Este algoritmo permite comprobar que la numeración de la tarjeta es correcta, pero obviamente no indica si la tarjeta sigue siendo válida (no ha sido anulada, ha caducado, etc.).

    A continuación, se muestra el código Visual Basic para comprobar la validez en la numeración de una tarjeta de crédito:

    Cree un nuevo proyecto en Visual Basic y añada una caja de texto y un botón.

    Pegue el siguiente código:

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '
    ' Valida la tarjeta de crédito de acuerdo con el algoritmo ISO 2894
    ' El algoritmo es:
    ' 1. Calcular el peso para el primer dígito: si el número de dígitos
    ' es par el primer peso es 2 de lo contrario es 1. Después los
    ' pesos alternan entre 1, 2, 1, 2, 1 ...
    ' 2. Multiplicar cada dígito por su peso
    ' 3. Si el resultado del 2º paso es mayor que 9, restar 9
    ' 4. Sumar todos los dígitos
    ' 5. Comprobar que el resultado es divisible por 10
    '
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Function EsCCValido(sTarjeta As String) As Boolean
    Dim iPeso As Integer
    Dim iDigito As Integer
    Dim iSuma As Integer
    Dim iContador As Integer
    Dim sNuevaTarjeta As String
    Dim cCaracter As String * 1


    iPeso = 0
    iDigito = 0
    iSuma = 0


    'Reemplazar cualquier no digito por una cadena vacía
    For iContador = 1 To Len(sTarjeta)
    cCaracter = Mid(sTarjeta, iContador, 1)
    If IsNumeric(cCaracter) Then
    sNuevaTarjeta = sNuevaTarjeta & cCaracter
    End If
    Next iContador


    ' Si es 0 devolver Falso
    If sNuevaTarjeta = 0 Then
    EsCCValido = False
    Exit Function
    End If


    ' Si el número de dígitos es par el primer peso es 2, de lo
    ' contrario es 1
    If (Len(sNuevaTarjeta) Mod 2) = 0 Then
    iPeso = 2
    Else
    iPeso = 1
    End If


    For iContador = 1 To Len(sNuevaTarjeta)
    iDigito = Mid(sNuevaTarjeta, iContador, 1) * iPeso
    If iDigito >; 9 Then iDigito = iDigito - 9
    iSuma = iSuma + iDigito
    ' Cambiar peso para el siguiente dígito
    If iPeso = 2 Then
    iPeso = 1
    Else
    iPeso = 2
    End If
    Next iContador


    ' Devolver verdadero si la suma es divisible por 10
    If (iSuma Mod 10) = 0 Then
    EsCCValido = True
    Else
    EsCCValido = False
    End If


    End Function


    Private Sub btnComprobarCC_Click()
    If EsCCValido(Text1) Then
    MsgBox "Tarjeta válida"
    Else
    MsgBox "Tarjeta inválida"
    End If
    End Sub



    Ejecute la aplicación. En la caja de texto introduzca el número de la tarjeta de crédito y pulse el botón de comprobación. Puede probar con 4242 4242 4242 4242 que es un número válido.

    Digg Technorati Delicious StumbleUpon Reddit BlinkList Furl Mixx Facebook Google Bookmark Yahoo
    ma.gnolia squidoo newsvine live netscape tailrank mister-wong blogmarks slashdot spurl

    jueves, 25 de marzo de 2010

    Las 10 mejores funciones en Javascript

    Dustin Diaz, ha hecho una recopilación de las mejores funciones en Javascript, cuando empezé a leer este artículo pensé, “Serán las 10 que más le han gustado a él…”, he terminado de leerlo y aplaudo su elección, sin duda son las mejores, o por lo menos las más útiles.

    Esto no se puede aplicar a todos los proyectos ya que para cada uno requeríremos unas funciones u otras, dependiende siempre de nuestras necesidades. Lo que si es cierto que generalizando estas funciones son execepcionalmente buenas, he de ahi el motivo por el cual la mayoría de las grandes librerías las integren iguales o con una leve modificación.

    10 – addEvent()

    function addEvent(elm, evType, fn, useCapture) {
    if (elm.addEventListener) {
    elm.addEventListener(evType, fn, useCapture);
    return true;
    }
    else if (elm.attachEvent) {
    var r = elm.attachEvent('on' + evType, fn);
    return r;
    }
    else {
    elm['on' + evType] = fn;
    }
    }

    Empezamos fuerte, esta función se encarga de ayudarnos a gestionar los eventos de nuestra web, con ella podremos asignar a cualquier elemento un evento determinado, gracias al contenido de esta función el javascript no obstructivo es una realidad. Creada por Scott Andrew.

    9 – addLoadEvent()

    function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
    window.onload = func;
    }
    else {
    window.onload = function() {
    oldonload();
    func();
    }
    }
    }

    Se trata de una versión exclusivamente para el objeto window en el evento onload, de forma que podremos asignar una serie de funcionalidades a nuestro evento onload y ver el resultado al finalizar la carga de nuestra web. Tambien es posible usar addEvent() para realizar lo mismo. Creada por Simon Willison.

    8 – getElementsByClass()

    function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
    node = document;
    if ( tag == null )
    tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
    for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
    classElements[j] = els[i];
    j++;
    }
    }
    return classElements;
    }

    Una gran función que mediante un nombre de class, podremos encontrar los elementos que la compongan, devolviendo un array de objetos para trabar con ellos de forma más cómoda. Originalmente no fue creada por nadie en partícular aunque con el tiempo los desarrolladores han ido añadiendo mejoras para depurar la función.

    7 – cssQuery()

    Quizas la mejor aliada para trabajar con CSS desde Javascript, escrita por Dean Edwars, llama la atención por la cantidad de selectores que permite usar a la hora de realizar la consulta. Ver documentación.

    6 – toggle()

    function toggle(obj) {
    var el = document.getElementById(obj);
    if ( el.style.display != 'none' ) {
    el.style.display = 'none';
    }
    else {
    el.style.display = '';
    }
    }

    Esta función la habré implementado un millón de veces, es la típica que se usa una infinidad de veces y generalmente no sabes ni como se llama. Se trata de una función que oculta/muestra un elemento dependiendo de su estado anterior, osea mostrado lo que está oculto y viceversa.

    5 – insertAfter()

    function insertAfter(parent, node, referenceNode) {
    parent.insertBefore(node, referenceNode.nextSibling);
    }

    Esta no la había usado nunca, creada por Jeremy Keith, nos permite insertar un nodo despues de otro elemento padre.

    4 – inArray()

    Array.prototype.inArray = function (value) {
    var i;
    for (i=0; i < this.length; i++) {
    if (this[i] === value) {
    return true;
    }
    }
    return false;
    };

    ¿Cuantas veces has tenido que recorrer un array entero para saber si hay un valor o no? Pues esta función realiza la busqueda por ti.

    function getCookie( name ) {
    var start = document.cookie.indexOf( name + "=" );
    var len = start + name.length + 1;
    if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
    return null;
    }
    if ( start == -1 ) return null;
    var end = document.cookie.indexOf( ';', len );
    if ( end == -1 ) end = document.cookie.length;
    return unescape( document.cookie.substring( len, end ) );
    }

    Función de manual para recoger datos de la cookie del cliente, muy cómoda y práctica.

    2 – setCookie()

    function setCookie( name, value, expires, path, domain, secure ) {
    var today = new Date();
    today.setTime( today.getTime() );
    if ( expires ) {
    expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );
    document.cookie = name+'='+escape( value ) +
    ( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
    ( ( path ) ? ';path=' + path : '' ) +
    ( ( domain ) ? ';domain=' + domain : '' ) +
    ( ( secure ) ? ';secure' : '' );
    }

    Función compañera a getCookie() con la cual podrás almacenar en el cliente los datos necesarios en forma de cookie.

    1 – deleteCookie()

    function deleteCookie( name, path, domain ) {
    if ( getCookie( name ) ) document.cookie = name + '=' +
    ( ( path ) ? ';path=' + path : '') +
    ( ( domain ) ? ';domain=' + domain : '' ) +
    ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
    }

    Función encargada de eliminar cookies en el cliente.

    Mención Honorífica – $()

    function $() {
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
    element = document.getElementById(element);
    if (arguments.length == 1)
    return element;
    elements.push(element);
    }
    return elements;
    }

    Con diferencia la función más extendida de la red, todas las librerías la usan e incluso le han añadido funcionalidades (como xPath en jQuery), consiguiendo una función muy pontente que nos volverá un elemento o una serie de elementos, únicamente pasando como parametro los id’s de los elementos deseados.

    Podeis descargarlas todas desde la página de Dustin Diaz.

    Digg Technorati Delicious StumbleUpon Reddit BlinkList Furl Mixx Facebook Google Bookmark Yahoo
    ma.gnolia squidoo newsvine live netscape tailrank mister-wong blogmarks slashdot spurl

    miércoles, 24 de marzo de 2010

    800 Javascripts para webmasters


    Javascript Source Code 3000. Son 800 scripts listos para utilizar secuencias de comandos de Java con solo cortar y pegar en sus páginas web.
    Todos los guiones han sido organizados por categoría para que pueda encontrar lo que necesitas rápidamente. Aun así, te invitamos a navegar a través de todas las categorías por lo que tener una idea de lo que está disponible. Podes encontrar algunos scripts útiles que ni siquiera sabía que existían o elegir algunas ideas para sus propios proyectos!

    Feliz Scripting! (tamaño de sólo 6.2 Mb)

    Download

    Digg Technorati Delicious StumbleUpon Reddit BlinkList Furl Mixx Facebook Google Bookmark Yahoo
    ma.gnolia squidoo newsvine live netscape tailrank mister-wong blogmarks slashdot spurl