Busca lo que quieras

Mostrando entradas con la etiqueta Jquery y Javascript. Mostrar todas las entradas
Mostrando entradas con la etiqueta Jquery y Javascript. Mostrar todas las entradas

Mantener visible tooltip de jqueryui

Bueno...después de mucho luchar... encontré la solución...

Gracias a

Funciona... no estoy seguro si es muy eficiente... pero de que funciona... funciona...

Espero les sirva este tooltip sin que se oculte.

var selectorTooltip = "input";

$(selectorTooltip).bind( "mouseleave", function( event ) {
event.stopImmediatePropagation();

var fixed = setTimeout('$("' + selectorTooltip +'").tooltip("close")', 500);

$(".ui-tooltip").hover(
   function(){clearTimeout (fixed);},
   function(){$(selectorTooltip).tooltip("close");}
);
}).tooltip({
    hide: {
        effect: 'explode'// added for visibility
    } 
});

Sean felices! :) Y siéntanse libres de opinar ;)

Verificar si se ejecuta funciones jquery con jasmine

Hola.

Si queremos verificar si se ha ejecuta cierta función de jquery con jasmine un ejemplo es el siguiente:

spyOn($.fn, "remove").and.callThrough();

En ese caso estoy creando un spyOn sobre la función remove de jquery. La expresión: .and.callThrough(); lo que esta diciendo es que por favor escuche, pero no me afecte el normal funcionamiento de la función.

Entonces, en el it, colocaríamos:

 expect($.fn.remove).toHaveBeenCalled();

Sean felices! :) Y siéntanse libres de opinar ;)

Imprimir variable en jsfiddle

Si hemos manejado alguna vez jsfiddle, y no tenemos ni idea como imprimir una variable.... Así como de primerazo... pues aquí esta.

Colocar en HTML:

<div id="mivariableamostrar"></div>

Y colocar esto como JAVASCRIPT a modo de ejemplo:

var estaEsMiVariable = 'este es el contenido de la variable que quiero imprimir';
document.getElementById('mivariableamostrar').innerHTML = estaEsMiVariable;

Espero les sirva.

Sean felices! :) Y siéntanse libres de opinar ;)

Como ajustar tamaño de window de phantomjs con se-interpreter

Seré lo más breve posible.

Esto gracias a david.lince y a la documentación de se-interpreter.

El problema:

Cuando se corren las pruebas E2E con phantomJS, me generaba error, pues no encontraba ciertos objetos en el DOM. ¿Por qué? Porque la ventana que genera phantomJS era muy pequeña, razón por la cual los sidebars estan ocultos, y por esto, no encontraba los botones que estaban dentro de esos sidebars.

Eso lo logré determinar gracias a que ejecuté las pruebas sobre firefox con tamaño pequeño de la ventana, y sucedió el mismo error.

¿La solución?

Obligar a phantomJS a ejecutarse sobre un tamaño de pantalla grande.

¿Y cómo se hace eso?

Me demoré como unas 3 o 4 horas. Que triste.
La utilidad que estamos utilizando es la de se-interpreter. Eso es como un framework que me permite ejecutar una serie de pasos formateados en un json.

Asi que bajo esta herramienta de se-interpreter, tocó realizar el ajuste.

Aquí estan las cosas que me toco hacer:

PRIMERO:

1. Gracias a un script que subió david.lince, pude hacer esto, sino... imposible....
Aquí el link donde tome este codigo: https://github.com/Zarkonnen/se-interpreter/blob/master/step_types/setWindowSize.js

 Entonces..

En la carpeta step_types, (que esta en la carpeta donde quedó instado se-interpreter)crear un archivo que se puede llamar setWindowSize.js.
Y ese archivo debe contener lo siguiente:

exports.get = function(stepType) {
  if (stepType == "windowSize") {
    return {
      'run': function(tr, cb) {
        tr.do('windowHandle', [], cb, function (err, handle) {
          var w = parseInt(tr.p('width'), 10),
              h = parseInt(tr.p('height'), 10);
          tr.do('windowSize', [handle, w, h], cb, function(err) {
            cb({'success': !err, 'error': err});
          });
        });
      }
    };
  }
  return null;
};

SEGUNDO
Ahora, en nuestro json de pruebas, podemos agregar un step de tipo windowSize.

Ejemplo...

"steps": [
        {
            "type": "get",
            "url": "http://localhost:8001"
        },
        { "type": "windowSize",  "width": 1600, "height": 900 },
        {
            "type": "waitForElementPresent",
            "locator": {
                "type": "xpath",
                "value": "//li[@id='menuListInbox']//span[.='Inbox']"
            }
        }
...
]


Como esta resaltado, defino un paso extra al principio del set de pruebas, en el cual le estoy diciendo que por favor, me coloque el tamaño de la ventana de un tamaño de 1600 por 900.

TERCERO

Finalmente cuando ejecutemos nuestro comando de se-interpreter debemos agregar un parámetro extra donde le decimos a se-interpreter que vamos a agregar un modulo extra, en este caso setWindowSize. Ese parámetro es: executorFactory.

Así:

se-interpreter archivoConfiguracionPruebas.json --executorFactory=" + __dirname + "\\node_modules\\se-interpreter\\step_types\\setWindowSize.js"  + " --parallel 1  --listener=" + __dirname + "\\scripts\\reporter\\listenerDeReportes.js


Y LISTO!!!... a probar se dijo... y me funcionó a mi... espero a ti tambien!!!!!

Saludos.


Sean felices! :) Y siéntanse libres de opinar ;)

Agregar waitFormElementPresent a las pruebas de selenium en javascript

Si hemos creado pruebas con selenium builder, para las pruebas end to end. Y hemos formado nuestras pruebas bajo el formato json, este script quizas te pueda servir.

Lo que sucede es que si los comandos se ejecutan más rápido que el browser en renderizar los objetos del DOM, se va a producir un error. (Lógico: por ejemplo, no puedo hacer clic a un botón que nisiquiera se ha puesto en el DOM).

Por esa razón, es bueno agregar la instrucción de waitForElementPresent. De esta manera nos aseguramos que antes que pase al siguiente comando click o lo que sea, primero espere a que este el objeto.

Esto se puede hacer manualmente, pero ¡Que pereza!. Por eso, hice una pequeña función que agrega la instrucción waitForElementPresent, antes de cada click o acción sobre algún elemento del DOM. Cabe decir que esta es la versión 0.0.0.0.0.0.0.1, y que esta para mejorarla muchísimo.

Esta es la función:

var newJson = JSON.parse(JSON.stringify(json));
newJson.steps = [];
for(iStep = 0; iStep < json.steps.length; iStep++){
    
    if(json.steps[iStep].type=="clickElement" || json.steps[iStep].type == "setElementText")
    {
        var step =  JSON.parse(JSON.stringify(json.steps[iStep]));
        //modify type step to waitStep
        step.type = "waitForElementPresent";
        newJson.steps.push(step);
    }
    newJson.steps.push(json.steps[iStep]);
}


Donde el json es: El objeto json de nuestras pruebas.

y newJson es: El nuevo objeto json de pruebas con waitForElementPresent.

El uso rudimentario que le doy actualmente es:

Copiar el json en la consola de chrome, y asignarlo a la variable json. 

Posteriormente ejecutar el pedazo de código puesto arriba

Obtener el json final así:

JSON.stringify(newJson)

Copio el string en una herramienta online de formateo de json, por ejemplo: http://pro.jsonlint.com/.

Lo pego, y listo... ya tengo mi json formateado de pruebas.

AQUI ESTA EN JSFIDDLE LA IDEA:

http://jsfiddle.net/elkin0727/k791oyaj/


Espero les sirva.


Sean felices! :) Y siéntanse libres de opinar ;)

Sacar copia de objeto sencillo en javascript

Y esta es la instrucción gracias a stackoverflow para sacar copia a un objeto.

var objetoClonado = JSON.parse(JSON.stringify(objetoACopiarSinReferencia));

FIN. Espero les sirva.

Sean felices! :) Y siéntanse libres de opinar ;)

Clonar un objeto en javascript asi tenga funciones

A veces salen unos errores al clonar objetos en javascript, por ejemplo: "circular reference".

Pero encontré hace poco la manera de clonarlos sin problemas... gracias jquery.

La solución es:

 var objetoClonado = $.extend(true, {}, objetoAClonarConFunciones);

MEJOR IR A LA FIJA CON EL SIGUIENTE CÓDIGO: GRACIAS A STACKOVERFLOW.

Actualización.... creo que este si le funcionará sin problemas. Aunque no es tan automático, les puede servir la funcion:

function objetoAJSONString(censor) {
  var i = 0;

  return function(key, value) {
    if(i !== 0 && typeof(censor) === 'object' && typeof(value) == 'object' && censor == value) 
      return '[Circular]'; 

    if(i >= 29) // seems to be a harded maximum of 30 serialized objects?
      return '[Unknown]';

    ++i; // so we know we aren't using the original object anymore

    return value;  
  }
}

y se utiliza así:

JSON.stringify(objetoConFuncionesOReferenciaCircular, objetoAJSONString(objetoConFuncionesOReferenciaCircular))

FIN... AHORA SI DISFRUTEN

ENCONTRÉ OTRA OPCIÒN: Esto parece que no esta servido en internet, pero aquí lo dejo. De nuevo, gracia a stackoverflow:

JSON.stringifyOnce = function(obj, replacer, indent){
    var printedObjects = [];
    var printedObjectKeys = [];

    function printOnceReplacer(key, value){
        if ( printedObjects.length > 2000){ 
        //return 'object too long';
        }
        var printedObjIndex = false;
        printedObjects.forEach(function(obj, index){
            if(obj===value){
                printedObjIndex = index;
            }
        });

        if ( key == ''){ //root element
             printedObjects.push(obj);
            printedObjectKeys.push("root");
             return value;
        }

        else if(printedObjIndex+"" != "false" && typeof(value)=="object"){
            if ( printedObjectKeys[printedObjIndex] == "root"){
                return "(pointer to root)";
            }else{
                return "(see " + ((!!value && !!value.constructor) ? value.constructor.name.toLowerCase()  : typeof(value)) + " with key " + printedObjectKeys[printedObjIndex] + ")";
            }
        }else{

            var qualifiedKey = key || "(empty key)";
            printedObjects.push(value);
            printedObjectKeys.push(qualifiedKey);
            if(replacer){
                return replacer(key, value);
            }else{
                return value;
            }
        }
    }
    return JSON.stringify(obj, printOnceReplacer, indent);
};


Espero les sirva.


Sean felices! :) Y siéntanse libres de opinar ;)

Solución de error de JSON.stringify Converting circular structure to JSON

Todo esto gracias a stackoverflow y sus usuarios maravillosos que comparten la información

Para solucionar esto... podemos hacer lo siguiente:

No utilizar la función JSON.stringify SINO JSON.pruned

Para esto hay que hacer dos pasos:

PASO NO. 1:

JSON.pruned no existe realmente, toca primero agregarla... de manera que...

a. Abrimos la consola del navegador....
b. Ejecutamos lo siguiente que esta en negrita:

// JSON.pruned : a function to stringify any object without overflow
// example : var json = JSON.pruned({a:'e', c:[1,2,{d:{e:42, f:'deep'}}]})
// two additional optional parameters :
//   - the maximal depth (default : 6)
//   - the maximal length of arrays (default : 50)
// GitHub : https://github.com/Canop/JSON.prune
// This is based on Douglas Crockford's code ( https://github.com/douglascrockford/JSON-js/blob/master/json2.js )
(function () {
    'use strict';

    var DEFAULT_MAX_DEPTH = 6;
    var DEFAULT_ARRAY_MAX_LENGTH = 50;
    var seen; // Same variable used for all stringifications

    Date.prototype.toPrunedJSON = Date.prototype.toJSON;
    String.prototype.toPrunedJSON = String.prototype.toJSON;

    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        };

    function quote(string) {
        escapable.lastIndex = 0;
        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
            var c = meta[a];
            return typeof c === 'string'
                ? c
                : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    }

    function str(key, holder, depthDecr, arrayMaxLength) {
        var i,          // The loop counter.
            k,          // The member key.
            v,          // The member value.
            length,
            partial,
            value = holder[key];
        if (value && typeof value === 'object' && typeof value.toPrunedJSON === 'function') {
            value = value.toPrunedJSON(key);
        }

        switch (typeof value) {
        case 'string':
            return quote(value);
        case 'number':
            return isFinite(value) ? String(value) : 'null';
        case 'boolean':
        case 'null':
            return String(value);
        case 'object':
            if (!value) {
                return 'null';
            }
            if (depthDecr<=0 || seen.indexOf(value)!==-1) {
                return '"-pruned-"';
            }
            seen.push(value);
            partial = [];
            if (Object.prototype.toString.apply(value) === '[object Array]') {
                length = Math.min(value.length, arrayMaxLength);
                for (i = 0; i < length; i += 1) {
                    partial[i] = str(i, value, depthDecr-1, arrayMaxLength) || 'null';
                }
                v = partial.length === 0
                    ? '[]'
                    : '[' + partial.join(',') + ']';
                return v;
            }
            for (k in value) {
                if (Object.prototype.hasOwnProperty.call(value, k)) {
                    try {
                        v = str(k, value, depthDecr-1, arrayMaxLength);
                        if (v) partial.push(quote(k) + ':' + v);
                    } catch (e) { 
                        // this try/catch due to some "Accessing selectionEnd on an input element that cannot have a selection." on Chrome
                    }
                }
            }
            v = partial.length === 0
                ? '{}'
                : '{' + partial.join(',') + '}';
            return v;
        }
    }

    JSON.pruned = function (value, depthDecr, arrayMaxLength) {
        seen = [];
        depthDecr = depthDecr || DEFAULT_MAX_DEPTH;
        arrayMaxLength = arrayMaxLength || DEFAULT_ARRAY_MAX_LENGTH;
        return str('', {'': value}, depthDecr, arrayMaxLength);
    };

}());

PASO NO. 2

Ya podemos ejecutar nuestra funcion normalmente

JSON.pruned(miobjetoaserializar)

PASO NO. 3 EXTRA
Si queremos ver nuestro JSON BONITO.... podemos ir a la url:

https://www.jsoneditoronline.org/

Y hay podemos pasar toda esa serializacion y verla de manera organizada.

Espero les sirva.

Sean felices! :) Y siéntanse libres de opinar ;)

Obtener último item de array de un split en javascript

Bueno...

Si tienes un string separado por un caracter coma(,).

esta,es,mi,cadena,de,texto,para,la,prueba

Y quieres obtener la ultima cadena de texto desde el caracter coma(,)  osea...

esta,es,mi,cadena,de,texto,para,la,prueba

Entonces esta linea te servirá:

var miFraseParaHacerSplit = "esta,es,mi,cadena,de,texto,para,la,prueba";
var miUltimoItemPorSplit = miFraseParaHacerSplit.split(/[, ]+/).pop();
console.log(miUltimoItemPorSplit); // imprime prueba

Sean felices! :) Y siéntanse libres de opinar ;)

Haciendo test de un callback simple con jasmine

El mundo de los test es maravilloso. Es un requisito para un buen programador.

Sin embargo, las pruebas se vuelven complejas dependiendo del código que desarrollemos.

A continuación un ejemplo sencillo. Espero poder en otras oportunidades publicar tests más complejos.

Por ejemplo... supongamos que queremos hacer las pruebas a lo siguiente:

var control = {

    myFunction: function(parametro1, parametro2, callbackSimple){
         //despues de hacer muchas cosas
         callbackSimple("argumento1", "argumento2");
    },
    init : function(){
        myFunction("param1", "param2", function(){
           //necesito que ingrese aquí la prueba con jasmine
           //AQUÍ
           console.log("muchas cosas en esta funcion");
        });
    }


Ahora... como hacemos para que entre la prueba donde dice AQUÍ.

Sería así:

it("Verificar que ingrese al callback basico", function () {
      control.myFunction = jasmine.createSpy("myFunction").
                   and.callFake(function(argument1, argument2, callback){
                       callback("respuesta1", "respuesta2");
                   })
      control.init();
});


Sean felices! :) Y siéntanse libres de opinar ;)

Trim en javascript IE8 para eliminar espacios de string

Hola a todos.

Aquí entonces está la función para hacer trim, ya que ie8 no lo soporta.

Gracias a W3schools

function myTrim(x) {
    return x.replace(/^\s+|\s+$/gm,'');
}

Sean felices! :) Y siéntanse libres de opinar ;)

Enviar formulario post con javascript

Bueno compañeritos del desarrollo...

Lo que puedo decirles es que es relativamente fácil.

NOTA: Esto abrirá una ventana nueva porque la función contiene _blank... si queremos un post en la misma página lo cambiaríamos por un _self.

Primero tenemos que definir un objeto y a este asignarle las propiedades con su respectivo valor.

var parametros = {};
parametros.miprimerparametro = 'que bonito';
parametros.otroparametro = 2;
parametros.tercerparametro = 'otro valor mas a enviar';


Y posteriormente llamar la siguiente función (ojo que fue gracias a stackoverflow).

submitFormularioConParametros('http://miurl/adondequiera.aspx', parametros);


Lógicamente debe estar la siguiente función mágica para hacer esto:

function submitFormularioConParametros(url, params) {
    var form = [ '<form method="POST" target="_blank" action="', url, '">' ];

    for(var key in params) 
        form.push('<input type="hidden" name="', key, '" value="', params[key], '"/>');

    form.push('</form>');

    jQuery(form.join('')).appendTo('body')[0].submit();
}



Y espero les sirva esta hermosa función... se las repito:

function submitFormularioConParametros(url, params) {
    var form = [ '<form method="POST" target="_blank" action="', url, '">' ];

    for(var key in params) 
        form.push('<input type="hidden" name="', key, '" value="', params[key], '"/>');

    form.push('</form>');

    jQuery(form.join('')).appendTo('body')[0].submit();
}

Espero les sirva.

Sean felices! :) Y siéntanse libres de opinar ;)

Diferencia entre dos fechas con javascript y momentjs

Para mi la mejor opción para manejar fechas de todo tipo es momentjs.
Así que utilizando esta librería vamos a ver como se obtiene la diferencia entre dos fechas y determinar la cantidad de minutos entre las dos fechas... sería así:

moment().diff(moment('2011/01/01'), 'minutes')

moment()                               fecha actual. es la mayor.

moment('2011/01/01')           es la fecha menor.

Aquí esta la documentación de momentjs.

Saludos.

Sean felices! :) Y siéntanse libres de opinar ;)

Mostrar div con textarea con jquery superpuesto en página

Hoy día muchas páginas utilizan jquery en sus sitios. Eso nos facilita el hecho de extraer información de la pagina utilizando jquery. ¿Y donde podemos mostrarla?

Bueno, pues utilizando jquery podemos agregar un div superpuesto y dentro de este, un textarea donde dejaremos la información que queramos.

Así que este sería el código para esto:

if($('#showerrorexception').length == 0){
$('body').append('<div id="showerrorexception" style="display:none;width:300px;height:300px;background-color:white;position:absolute;top:1px;left:1px;z-index:100;"><button onclick="document.getElementById(\'showerrorexception\').style.display = \'none\';">Cerrar</button><br>    <textarea id="messageerrortextarea" style="width:100%; height:100%;"  type="texto" ></textarea>    </div>');
}
else{
var date = new Date();
$('#messageerrortextarea').val($('#messageerrortextarea').val() + '\n-----------\n' + date + '\n' + 'este es el error');
}


Sean felices! :) Y siéntanse libres de opinar ;)

Mapear objetos en javascript

A veces obtenemos del backend una lista de objetos en formato json, pero necesitamos mapearlo a una lista de objetos pero con distintos nombres de propiedades.... en ese caso este sería el código:

El ejemplo aquí es utilizando una variable de knockout instanciada como observableArray()... el objeto mappedTemplates es en realidad una lista de objetos.

function objectOptionSelect(name, value) {
    this.Texto = name
    this.Valor = value
}

var mappedTemplates = $.map(data.d, function (item) { return new objectOptionSelect(item.CampoTextoField, item.CampoValorField) });

self.itemsOficina(mappedTemplates);

Sean felices! :) Y siéntanse libres de opinar ;)

Autoajustar al ancho de la pantalla un jquery dialog

El jquery dialog por defecto abre pequeñito... pero aveces necesitamos que sea tan grande como el ancho de la ventana del navegador... así como también el alto.... Entonces aquí coloco el código de como abrir un popup y posteriormente autoajustarlo al ancho de la pantalla.

//agregar modal tipo iframe para gestionar certificado
    $("#dialogManagement").dialog({
        autoOpen: false,
        resizable: false,
        modal: true,
        width: 20,
        height: 20,
        responsive: true,
        open: function (ev, ui) {
            $('#iframeManagement').attr('src', 'http://www.google.com');

            $("#dialogManagement").dialog("option", "height", $(window).height() * 0.95);
          $("#dialogManagement").dialog("option", "width", $(window).width() * 0.95);

           $("#dialogManagement").css('overflow', 'hidden'); //SI ES UN IFRAME LO QUE ABRE OCULTA UN SCROLL
        }
    });

    $('#dialogManagement').dialog('open');

Sean felices! :) Y siéntanse libres de opinar ;)

Abrir iframe en popup con jquery dialog

A veces necesitamos abrir un popup y dentro de este un iframe... entonces este sería el código:

//agregar modal tipo iframe
    $("#dialogManagement").dialog({
        autoOpen: false,
        resizable: false,
        modal: true,
        width: 20,
        height: 20,
        responsive: true,
        open: function (ev, ui) {
            $('#iframeManagement').attr('src', 'http://www.google.com');

        }
    });

    $('#dialogManagement').dialog('open');

Espero les sirva.

Sean felices! :) Y siéntanse libres de opinar ;)

Borrar filas o resultados de jqgrid

Aquí esta el código:

//Borrar resultados de la grilla
        var myGrid = $("#GridBasicSearchResults"); // the variable you probably have already somewhere
        var gridBody = myGrid.children("tbody");
        var firstRow = gridBody.children("tr.jqgfirstrow");
        gridBody.empty().append(firstRow);

Espero les sirva.

Sean felices! :) Y siéntanse libres de opinar ;)

Notificaciones con chrome desktop en HTML5

El día que escribo este post, parece que va a ser el estandar, y espero no lo cambien (como ya me paso alguna vez, y que por esa razon este objeto: window.webkitNotifications  ya no funcionaba.... pero con este nuevo código ya funciona otra vez...je je )



Es un "objeto" que defino en javascript y solo hay que instanciarlo y utilizarlo:

Aquí la "clase o objeto":

/*INICIO NOTIFICATIONS DESKTOP*/     
function Notifier() {}

    // Returns "true" if this browser supports notifications.
    Notifier.prototype.HasSupport = function() {
    if (Notification) {
        return true;
      } else {
        return false;
      }
    }
    // Returns "true" if this browser supports notifications.
    Notifier.prototype.HasPermission = function () {
        if (Notification.permission === "granted") {
            return true;
        } else {
            return false;
        }
    }

    // Request permission for this page to send notifications. If allowed,
    // calls function "cb" with true.
    Notifier.prototype.RequestPermission = function (cb) {
        Notification.requestPermission(function (status) {
            if (status === 'granted') {
                return true;
            }
            else {
                return false;
            }
            
        });
    }

    // Popup a notification with icon, title, and body. Returns false if
    // permission was not granted.
    Notifier.prototype.Notify = function(icon, title, body) {
        if (Notification.permission === "granted") {
            var optionsNotification = {
                body: body,
                icon: icon
            }
            //Notification.create('1', optionsNotification);
            var n = new Notification(title, optionsNotification);

        return true;
      }

      return false;
    }

La instanciación:

var notifier = new Notifier();

El uso:

notifier.RequestPermission();

ó

notifier.HasSupport()

etc.

Para más información aquí.

Espero les sirva.

Sean felices! :) Y siéntanse libres de opinar ;)

Reemplazar todos los caracteres de un string en javascript

No existe una función que reemplace todos los caracteres de un string por otro en javascript.

Así que se puede agregar al código en las primeras lineas lo siguiente:

String.prototype.reemplazarTodo = function (text, busca, reemplaza) {
    while (text.toString().indexOf(busca) != -1)
        text = text.toString().replace(busca, reemplaza);
    return text;
}

Ya con esta función definida, lo unico que tenemos que hacer es llamarla normalmente desde un string asi:

var mivariable = "aaabbbcccdddbbb";
var mireemplazar = mivariable.reeemplazarTodo(mivariable,'b', 'z');

Y listo.

Espero les sirva

Sean felices! :) Y siéntanse libres de opinar ;)

Palabras Clave

.NET (93) AJAX (2) ajaxcontroltoolkit (2) Algoritmos (1) android (1) Angular (1) Arrays (1) AS2 o ActionScript 2.0 (1) AS3 o ActionScript 3.0 (64) ASP (7) ASP.NET (3) Azure (1) Azure DevOps (2) Backup (2) Batch (4) blogger (1) Browser Support (2) C# (53) Charts (1) Chorme extensions (1) Chrome (3) cmd (18) código postal (1) Colombia tips (1) command (1) Conexion remota (1) Controles Web .NET (24) Cookies (1) cordova (1) CSS (14) CSV (5) Cufon (1) DateTime (2) deployment (2) Desarrollo movil (2) Desarrollo web (5) Diseño (4) DNN o DotNetNuke (5) docker (1) Encuestas (1) Entity Framework (1) Error (1) Eval (2) Excel (4) Expresiones regulares (2) Facebook (14) fechas (1) Fiddler (1) FileUpload (1) Filezilla (1) Firefox (2) Flash (9) Fonts (3) FQL (1) frameworks (2) Futuro de la web (1) git (1) Google Code (13) Google Maps (4) hackintosh (3) hazard 10.6.2 (3) herramientas para developers (1) highchart (1) Hilos (2) Hosting Windows (18) HTML (38) HTML5 (6) IDE (1) IE (2) IE9 (1) IIS (13) imagenes (3) jasmine (2) java (1) jqgrid (2) Jquery y Javascript (90) jquery-ui (5) jQueryMobile (1) JSON (1) knockout (4) library (1) Link Interesantes (2) List (1) Macro (2) Matemáticas (2) Membership (6) Memoria (1) Mis Experiencias (3) momentjs (1) ms-dos (1) MSN (1) MVC (1) MVC4 (3) MySQL (2) node.js (4) Notepad++ (3) Notificaciones (1) ObjectDataSource (2) Online (2) Opinión (4) OSX (3) Parallels Plesk Panel (1) petapoco (1) PhantomJS (1) PHP (4) Porqué este blog (1) Powershell (1) Razor (3) Redes (2) REGEX (4) REST (1) SDK Android (1) Seguridad (1) SelectParameters (1) Selenium (2) sencha (3) sencha cmd (2) SEO (1) SMTP (2) Software útil (8) Solución (1) Soporte (1) SQL (15) SQL Server (58) SQLite (2) Store Procedures (20) String (5) Testing Code (2) texto (2) tips de datos (1) tips de desarrollo (1) TutoFaceAS3 (4) TutoProAS3 (4) Tutoriales (7) Tweenlite effects (3) Últimas noticias (1) unit testing (1) usb (1) VBA (1) Video (1) virus (1) Web API (2) Web Browsers (1) Web Forms (7) web.config (1) Webmaster (8) Webmatrix (1) webrole (1) webservices (1) webstorm (1) Win Forms (5) Windows (21) Windows 7 (1) Windows 8 (1) XML (2) Youtube API (2)