Validar Url con Javascript

En el siguiente código se muestra un ejemplo de como validar un string/url con Javascript, o sea comprar si un string/texto dado es una Url valida.

El ejemplo esta integrado en una función Javascript.

function is_url(str) {
    //Declaramos la expresión regular que se usará para validar la url pasada por parámetro
    var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
    //Retorna true en caso de que la url sea valida o false en caso contrario
    return regexp.test(str);
 }

//Uso
var Url = "http://notasdelprogramador.com";
if(is_url(Url){
    alert('Es una url válida');
    console.log('Es una url válida');
}else{
    alert('La url pasada no es válida');
    console.log('La url pasada no es válida');
}

JavaScript – Función is_array()

En JavaScript, muchas veces necesitamos comprobar si una variable es un array y en JS no tenemos una función que nos facilite la tarea.

En este post creamos una función llamada is_array para realizar esta validación.

function is_array(input){
  return typeof(input)=='object'&&(input instanceof Array);
}

//Ejemplo uso
//Definimos un array
var myCars=new Array("Saab","Volvo","BMW");

//Validamos si myCars es un array o no
if(is_array(myCars)){
  alert("true");
}else{
    alert("false");
}

Explicación:

El typeof() acepta cualquier entrada y devolverá el tipo de entrada. Por lo tanto, si dice que el tipo de entrada de nuestra función es “object”, eso significa que nuestra entrada es un objeto. Una matriz es un tipo de objeto en JavaScript.

Aquí está una lista de algunos tipos de variables comunes de JavaScript:

  • String
  • Boolean
  • Number
  • Function
  • Object
  • Undefined

A continuación, sólo debemos asegurarnos de que la entrada es el tipo objeto. Podemos comprobar si se trata de una instancia del objeto Array mediante el uso de instanceof.

Corrección a plugin ALO EasyMail para usar plugin WMPL con dominios diferentes

En este caso estamos usando el plugin WPML para manejo multi-idioma,  el mismo nos permite configurar diferentes nombres de dominio para cada idioma.

Cuando instalé el plugins para envío de Newsletter llamado ALO EasyMail y creo, el más practico del mercado y que mejor se adaptó a mis necesidades, detecte que no funcionaba en los dos dominios que tengo, uno para español y otro para ingles.

El problema radicaba en el uso que hace el plugins de Ajax y como Ajax no soporta cross domain para que el plugins funcione con dominios diferentes y sea compatible con las funcionalidades del Plugins de Internacionalización WMPL hay que hacer un cambio para no llamar a los script con URL absoluta.

El problema estaba en la llamada a la función para construir la Url del script Ajax. El cambio que hicimos hace que llame a la Url relativa y no a la Url absoluta del sitio.

Archivo modificado: /wp-content/plugins/alo-easymail/alo-easymail_functions.php

//En líneas 1084 y 1085
//Antes
var alo_em_sack = new sack("<?php echo admin_url() ?>admin-ajax.php");
//Corrección
var alo_em_sack = new sack("<?php echo get_bloginfo('url') ?>/wp-admin/admin-ajax.php");

//En líneas 1190 y 1191 - Estos cambios es sobre funciones JavaScript
//Antes
var alo_em_sack = new sack("<?php echo admin_url() ?>admin-ajax.php" );
//Corrección
var alo_em_sack = new sack("<?php get_bloginfo('url') ?>/wp-admin/admin-ajax.php" );