<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>vissit.com</title>
	<atom:link href="https://www.vissit.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.vissit.com</link>
	<description>Front end development: HTML, CSS, Javascript y algo más</description>
	<lastBuildDate>Fri, 16 Jan 2026 10:45:53 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Cómo detectar imágenes erroneas con Javascript</title>
		<link>https://www.vissit.com/detectar-imagenes-erroneas-con-javascript/</link>
					<comments>https://www.vissit.com/detectar-imagenes-erroneas-con-javascript/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Thu, 06 Sep 2018 07:44:28 +0000</pubDate>
				<category><![CDATA[escribimos]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=1061</guid>

					<description><![CDATA[Hola, hace muchísimo que no escribía algo por aquí, pero hoy me he encontrado con una función que me va a ser de mucha ayuda en mis proyectos. En muchas ocasiones me he encontrado con problemas para detectar por JS si las imágenes que quiero cargar existen o no. Ahora ya no volveré a tener [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<p>Hola, hace muchísimo que no escribía algo por aquí, pero hoy me he encontrado con una función que me va a ser de mucha ayuda en mis proyectos.</p>
<p>En muchas ocasiones me he encontrado con problemas para detectar por JS si las imágenes que quiero cargar existen o no. Ahora ya no volveré a tener este problema gracias a esta función:</p>
<pre class="brush: jscript; title: ; notranslate">
function checkForErrorImages(wrapId, selector) {
    var imgs = document.getElementById(wrapId).querySelectorAll(selector);

    imgs.forEach(function (img) {
        img.onerror = function () {
            this.setAttribute('src', 'alternativeImage.jpg');
        }
    });
}
</pre>
<p>Espero que también te sirva de ayuda a ti.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/detectar-imagenes-erroneas-con-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Funciones básicas alternativas para transitar desde jQuery a Vanilla JavaScript</title>
		<link>https://www.vissit.com/funciones-basicas-alternativas-para-transitar-desde-jquery-a-vanilla-javascript/</link>
					<comments>https://www.vissit.com/funciones-basicas-alternativas-para-transitar-desde-jquery-a-vanilla-javascript/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Wed, 20 Jun 2018 08:00:56 +0000</pubDate>
				<category><![CDATA[Sin categoría]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=1007</guid>

					<description><![CDATA[Supongo que no soy el único que empezó a usar JavaScript por medio de jQuery. La librería jQuery ha sido crucial para el desarrollo en Front, nos ha permitido a los desarrolladores hacer casi todo lo que queríamos de una manera rápida, sencilla y sin preocuparse por los navegadores. El único inconveniente que tenía era [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<p>Supongo que no soy el único que empezó a usar JavaScript por medio de jQuery. <strong>La librería jQuery ha sido crucial para el desarrollo en Front</strong>, nos ha permitido a los desarrolladores hacer casi todo lo que queríamos de una manera rápida, sencilla y sin preocuparse por los navegadores. El único inconveniente que tenía era que debíamos de cargar la librería, que no era especialmente ligera, y que ralentizaba la carga y uso de la web en cuestión.</p>
<p>Gracias al desarrollo del JavaScript «a pelo» (llamado Vanilla JS, o Plain JS) ahora ya podemos prescindir de jQuery y seguir disfrutando de la facilidad de uso, pero aún así a mi me está costando dar el salto de jQuery a VanillaJS, y es que son ya muchos años trabando del modo jQuery.</p>
<p><img fetchpriority="high" decoding="async" width="769" height="530" class="aligncenter size-large wp-image-1009" src="https://www.vissit.com/wp-content/uploads/2016/07/jquery_to_js-769x530.png" alt="jquery_to_js" srcset="https://www.vissit.com/wp-content/uploads/2016/07/jquery_to_js.png 769w, https://www.vissit.com/wp-content/uploads/2016/07/jquery_to_js-768x529.png 768w" sizes="(max-width: 769px) 100vw, 769px" /></p>
<p><span id="more-1007"></span>Para intentar aliviar este cambio, <strong>he recopilado una sería de funciones</strong> que ya usaba de manera recursiva en jQuery, que hacen que mi código JS sea más limpio y asemejarlo un poco más a mi quería librearía.</p>
<p>He juntado todas ellas (y otras que vendrán) <a href="https://www.vissit.com/projects/paragridma/js/plainJS.js">en un fichero</a> que enlazo en mis proyectos, y así puedo hacer referencia a estas funciones a lo largo de todo el proyecto.</p>
<pre class="brush: xml; title: ; notranslate">
&amp;amp;lt;script src=&quot;/js/plainJS.js&quot; /&amp;amp;gt;
</pre>
<h3>Seleccionar elementos del DOM</h3>
<p>Esta es una de las tareas que más veces debemos de hacer, y con jQuery era tan sencillo como usar la función $. Ahora <strong>con Javascript podemos hacer uso de toda esta potencia por medio de document.querySelector y document.querySelectorAll</strong>, pero debemos de escribir muchos caracteres cada vez que queremos usarlo. Por eso podemos crear una función $ y $1 (o como tu quieras llamarla) que te haga ser más eficiente.</p>
<pre class="brush: jscript; title: ; notranslate">
// Seleccionar una lista de elementos por medio de un selector CSS. El contexto es opcional
function $(selector, context) {
    return (context || document).querySelectorAll(selector);
}

// Seleccionar el primer elemento que tenga el selector CSS. El contexto es opcional:
function $1(selector, context) {
    return (context || document).querySelector(selector);
}
</pre>
<p>Ejemplos:</p>
<pre class="brush: jscript; title: ; notranslate">
// Seleccionar todos los elementos '.bar' dentro de contenedores '.foo'
var elems = $('.foo .bar');

// ejemplo con contexto
var container = $1('.foo');
// seleccionar elementos '.bar' dentro del contenedor
var elems = $('.bar', container);
</pre>
<p><a href="https://plainjs.com/javascript/selecting/select-dom-elements-by-css-selectors-4/" target="_blank" rel="noopener">fuente</a>.</p>
<h3>Añadir, eliminar y comprobar clases</h3>
<pre class="brush: jscript; title: ; notranslate">
function hasClass(el, className) {
    return el.classList ? el.classList.contains(className) : new RegExp('\\b'+ className+'\\b').test(el.className);
}

function addClasses(el, classesArray) {
    if ( classesArray instanceof Array ) {
        for ( var i = 0; i &lt; classesArray.length; i++ ) { addClass(el, classesArray&#x5B;i]); } } else { addClass(el, classesArray); } } function addClass(el, className) { if ( el ) { if ( el.tagName ) { doAddClass(el, className); } else if ( el.length &gt;= 1 ) {
            for ( var i = 0; i &lt; el.length; i++ ) {
                doAddClass(el&#x5B;i], className);
            }
        }
    }
}

function removeClasses(el, classesArray) {
    if ( classesArray instanceof Array ) {
        for ( var i = 0; i &lt; classesArray.length; i++ ) { removeClass(el, classesArray&#x5B;i]); } } else { removeClass(el, classesArray); } } function removeClass(el, className) { if ( el ) { if ( el.tagName ) { doRemoveClass(el, className); } else if ( el.length &gt;= 1 ) {
            for ( var i = 0; i &lt; el.length; i++ ) {
                doRemoveClass(el&#x5B;i], className);
            }
        }
    }
}

function doAddClass(el, className) {
    if (el.classList) {
        el.classList.add(className);
    } else if (!hasClass(el, className)) {
        el.className += ' ' + className;
    }
}

function doRemoveClass(el, className) {
    if (el.classList) el.classList.remove(className);
    else el.className = el.className.replace(new RegExp('\\b'+ className+'\\b', 'g'), '');
}

function toggleClass(el, className) {
    if ( hasClass(el, className) ) {
        removeClass(el, className);
        return false;
    } else {
        addClass(el, className);
        return true;
    }
}
</pre>
<p>Ejemplos:</p>
<pre class="brush: jscript; title: ; notranslate">
var el = document.querySelector('div');
if (!hasClass(el, 'foo')){
    addClass(el, 'foo');
}
</pre>
<p><a href="https://plainjs.com/javascript/attributes/adding-removing-and-testing-for-classes-9/" target="_blank" rel="noopener">fuente</a>.</p>
<h3>Manipular el DOM</h3>
<pre class="brush: jscript; title: ; notranslate">
function appendTo(wrap, newElem) {
    wrap.insertAdjacentHTML( 'beforeend', newElem);
}

function insertAfter(newNode, referenceNode) {
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}

// document.getElementById(&quot;my-element&quot;).remove();
Element.prototype.remove = function() {
    this.parentElement.removeChild(this);
};

// document.getElementsByClassName(&quot;my-elements&quot;).remove();
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
    for(var i = this.length - 1; i &gt;= 0; i--) {
        if(this&#x5B;i] &amp;&amp; this&#x5B;i].parentElement) {
            this&#x5B;i].parentElement.removeChild(this&#x5B;i]);
        }
    }
};

// know if parents has a selector
// var parents = getParents(elem, '.some-class');
// var allParents = getParents(elem.parentNode);
var getParents = function ( elem, selector ) {

	// Element.matches() polyfill
	if (!Element.prototype.matches) {
		Element.prototype.matches =
			Element.prototype.matchesSelector ||
			Element.prototype.mozMatchesSelector ||
			Element.prototype.msMatchesSelector ||
			Element.prototype.oMatchesSelector ||
			Element.prototype.webkitMatchesSelector ||
			function(s) {
				var matches = (this.document || this.ownerDocument).querySelectorAll(s),
					i = matches.length;
				while (--i &gt;= 0 &amp;&amp; matches.item(i) !== this) {}
				return i &gt; -1;
			};
	}

	// Setup parents array
	var parents = &#x5B;];

	// Get matching parent elements
	for ( ; elem &amp;&amp; elem !== document; elem = elem.parentNode ) {

		// Add matching parents to array
		if ( selector ) {
			if ( elem.matches( selector ) ) {
				parents.push( elem );
			}
		} else {
			parents.push( elem );
		}

	}

	return parents;

};
</pre>
<h3>Obtener posición</h3>
<pre class="brush: jscript; title: ; notranslate">
function offset(el, parentElem) {
    var rect = el.getBoundingClientRect(),
        scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,
        scrollTop = window.pageYOffset || document.getElementById(parentElem).scrollTop || document.documentElement.scrollTop;

    return { top: rect.top + scrollTop, left: rect.left + scrollLeft }
}
</pre>
<h3>Ocultar o mostrar elementos</h3>
<pre class="brush: jscript; title: ; notranslate">
function hide(el) {
    el.style.display = 'none';
}

function show(el, value) {
    el.style.display = value;
}

function toggleVisibility(el, value) {
    var display = (window.getComputedStyle ? getComputedStyle(el, null) : el.currentStyle).display;
    if (display == 'none') el.style.display = value;
    else el.style.display = 'none';
}
</pre>
<p>Ejemplos:</p>
<pre class="brush: jscript; title: ; notranslate">
hide( elem );
show( elem, 'block' );
toggleVisibility( elem, 'block' );
</pre>
<p><a href="https://plainjs.com/javascript/effects/hide-or-show-an-element-42/" target="_blank" rel="noopener">fuente</a>.</p>
<h3>Poner estilos CSS a un elemento</h3>
<pre class="brush: jscript; title: ; notranslate">
function css(el, styles) {
    for (var property in styles) {
        el.style&#x5B;property] = styles&#x5B;property];
    }
}
</pre>
<p>Ejemplos:</p>
<pre class="brush: jscript; title: ; notranslate">
var el = document.querySelector('div');
css(el, { background: 'green', display: 'none', 'border-radius': '5px' });
</pre>
<p><a href="https://plainjs.com/javascript/styles/set-and-get-css-styles-of-elements-53/" target="_blank" rel="noopener">fuente</a>.</p>
<h3>Animar una propiedad del elemento</h3>
<pre class="brush: jscript; title: ; notranslate">
// fade an element from the current state to full opacity in &quot;duration&quot; ms
function fadeOut(el, duration) {
    var s = el.style, step = 25/(duration || 300);
    s.opacity = s.opacity || 1;
    (function fade() {
        if ( ( s.opacity -= step) &amp;amp;amp;amp;amp;amp;lt; 0 ) { s.display = &quot;none&quot;; } else { setTimeout(fade, 25); } })(); } // fade out an element from the current state to full transparency in &quot;duration&quot; ms // display is the display style the element is assigned after the animation is done function fadeIn(el, duration, display) { var s = el.style, step = 25/(duration || 300); s.opacity = s.opacity || 0; s.display = display || &quot;block&quot;; (function fade() { if ( ( s.opacity = parseFloat(s.opacity)+step) &amp;amp;amp;amp;amp;amp;gt; 1 ) {
            s.opacity = 1;
        } else {
            setTimeout(fade, 25);
        }
    })();
}
</pre>
<p>Ejemplos:</p>
<pre class="brush: jscript; title: ; notranslate">
fadeOut(elem, 500);
fadeIn(elem, 500);
</pre>
<p><a href="https://plainjs.com/javascript/effects/animate-an-element-property-44/" target="_blank" rel="noopener">fuente</a>.</p>
<h3>Peticiones Ajax</h3>
<pre class="brush: jscript; title: ; notranslate">
function getAjax(url, success) {
    var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
    xhr.open('GET', url);
    xhr.onreadystatechange = function() {
        if (xhr.readyState&gt;3 &amp;&amp; xhr.status==200) success(xhr.responseText);
    };
    //xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.send();
    return xhr;
}

function getCORS(url, success) {
    var xhr = new XMLHttpRequest();
    if (!('withCredentials' in xhr)) xhr = new XDomainRequest(); // fix IE8/9
    xhr.open('GET', url);
    xhr.onload = success;
    xhr.send();
    return xhr;
}

function postAjax(url, data, success) {
    // example request
    // postAjax('http://foo.bar/', 'p1=1&amp;p2=Hello+World', function(data){ console.log(data); });

    // example request with data object
    // postAjax('http://foo.bar/', { p1: 1, p2: 'Hello World' }, function(data){ console.log(data); });

    var params = typeof data == 'string' ? data : Object.keys(data).map(
        function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(data&#x5B;k]) }
    ).join('&amp;');

    var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);
    xhr.open('POST', url);
    xhr.onreadystatechange = function() {
        if (xhr.readyState&gt;3 &amp;&amp; xhr.status==200) { success(xhr.responseText); }
    };
    //xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send(params);
    return xhr;
}
</pre>
<p>Ejemplos:</p>
<pre class="brush: jscript; title: ; notranslate">
getAjax('http://foo.bar/?p1=1&amp;amp;amp;amp;amp;amp;amp;p2=Hello+World', function(respone){
    var jsonData = JSON.parse(respone);
    console.log(respone);
    console.log(jsonData);
});

// example request
postAjax('http://foo.bar/', 'p1=1&amp;amp;amp;amp;amp;amp;amp;p2=Hello+World', function(data){ console.log(data); });

// example request with data object
postAjax('http://foo.bar/', { p1: 1, p2: 'Hello World' }, function(data){ console.log(data); });
</pre>
<p><a href="https://plainjs.com/javascript/ajax/send-ajax-get-and-post-requests-47/" target="_blank" rel="noopener">fuente</a>.</p>
<h3>Mergear dos objetos</h3>
<pre class="brush: jscript; title: ; notranslate">
function extend(obj, src) {
    Object.keys(src).forEach(function(key) { obj&#x5B;key] = src&#x5B;key]; });
    return obj;
}
</pre>
<h3>Crear, obtener y borrar Cookies</h3>
<pre class="brush: jscript; title: ; notranslate">
function getCookie(name) {
    var v = document.cookie.match('(^|;) ?' + name + '=(&#x5B;^;]*)(;|$)');
    return v ? v&#x5B;2] : null;
}

function setCookie(name, value, days) {
    var d = new Date();
    d.setTime(d.getTime() + 24*60*60*1000*days);
    document.cookie = name + &quot;=&quot; + value + &quot;;path=/;expires=&quot; + d.toGMTString();
}

function deleteCookie(name) { setCookie(name, '', -1); }
</pre>
<p><a href="https://plainjs.com/javascript/utilities/set-cookie-get-cookie-and-delete-cookie-5/" target="_blank" rel="noopener">fuente</a>.</p>
<h3>Más información</h3>
<p>También puedes consultar otras webs que tratan esta transición dulce con más profundidad:</p>
<ul>
<li>Código alternativo a jQuery: <a href="http://youmightnotneedjquery.com/">http://youmightnotneedjquery.com/</a></li>
<li>Funciones y plugins hechos con Javascript: <a href="https://plainjs.com/">https://plainjs.com/</a></li>
<li><a href="https://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/">Native JavaScript Equivalents of jQuery Methods</a></li>
</ul>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/funciones-basicas-alternativas-para-transitar-desde-jquery-a-vanilla-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Async / await / promises</title>
		<link>https://www.vissit.com/async-await-promises/</link>
					<comments>https://www.vissit.com/async-await-promises/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Tue, 13 Mar 2018 11:44:17 +0000</pubDate>
				<category><![CDATA[escribimos]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=1049</guid>

					<description><![CDATA[Hoy he tenido que usar la funcionadlidad de Async de Javascript para resolver un problema complejo en uno de mis programas. Lo he resulto con este código. Creo este artículo para que mi yo del futuro pueda consultarlo. Espero que a alguno de vosotros también os sea de utilidad. function exampleFun1 () { return new [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<p>Hoy he tenido que usar la funcionadlidad de Async de Javascript para resolver un problema complejo en uno de mis programas. Lo he resulto con este código. Creo este artículo para que mi yo del futuro pueda consultarlo. Espero que a alguno de vosotros también os sea de utilidad.</p>
<pre class="brush: jscript; title: ; notranslate">
function exampleFun1 () {
  return new Promise(resolve =&amp;gt; {
    setTimeout(function () {
      resolve('exampleFun2 done');
    }, 1000);
  });
};

async function exampleFun2 () {
  const promises = &#x5B;1,2,3,4].map(exampleFun3);
  await Promise.all(promises);
}

async function exampleFun3(item) {
  return new Promise(resolve =&amp;gt; {
    setTimeout(function () {
      resolve('exampleFun3 done', item);
    }, 1000);
  });
};

async function updateAllStatus() {
  // Ejecuta estas funciones y espera hasta que terminen
  const await1 = await exampleFun1();
  const await2 = await exampleFun2();

  // Si han terminado sigue la ejecución
  console.log('Todo ha terminado');

  return true;
}
</pre>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/async-await-promises/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Vídeos de navidad de Paradigma.</title>
		<link>https://www.vissit.com/videos-de-navidad/</link>
					<comments>https://www.vissit.com/videos-de-navidad/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Fri, 02 Dec 2016 22:24:52 +0000</pubDate>
				<category><![CDATA[Sin categoría]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=1033</guid>

					<description><![CDATA[Por unos motivos o por otros casi todos los años estoy involucrado en el proceso de creación de los vídeos de fin de año de Paradigma. Estos vídeos ya se han convertido en toda una tradición, ya que llevamos desde el 2013 creandolos. Este «ritual» cada vez me gusta más, y se convierte en uno [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<p>Por unos motivos o por otros casi todos los años estoy involucrado en el proceso de creación de los vídeos de fin de año de <a href="http://www.paradigmadigital.com">Paradigma</a>. Estos vídeos ya se han convertido en toda una tradición, ya que llevamos desde el 2013 creandolos.</p>
<p>Este «ritual» cada vez me gusta más, y se convierte en uno de los momentos más especiales del año. A parte, me permite por unos días apartarme de mis tareas de desarrollo web, para centrarme en algo muy diferente y creativo.</p>
<p>Aprovecho a enlazarlos aquí, para tenerlos todos juntitos, que de vez en cuento me apetece volverlos a ver. Y así me doy cuenta de como cada año vamos subiendo un poco el listón.</p>
<p>Espero que este año estemos a la altura <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4aa.png" alt="💪" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h2>EsÉpocaDeHéroes. El desafío de hacer, entre todos, un mundo mejor.</h2>
<div class="videoPosterWrap YouTube" data-video-id="5hOR6NXKulg" data-video-provider="YouTube">   <img decoding="async" src="https://i.ytimg.com/vi/5hOR6NXKulg/hqdefault.jpg" class="videoPoster"/>   <a href="https://www.youtube.com/watch?v=5hOR6NXKulg" class="triggerVideoPoster" title="EsÉpocaDeHéroes. El desafío de hacer, entre todos, un mundo mejor"><em>EsÉpocaDeHéroes. El desafío de hacer, entre todos, un mundo mejor</em></a></div>
<h2>Te deseamos un año lleno de creátiles, ¡Feliz 2019!</h2>
<div class="videoPosterWrap YouTube" data-video-id="rzzKlDcO77s" data-video-provider="YouTube">   <img decoding="async" src="https://i.ytimg.com/vi/rzzKlDcO77s/hqdefault.jpg" class="videoPoster"/>   <a href="https://www.youtube.com/watch?v=rzzKlDcO77s" class="triggerVideoPoster" title="Te deseamos un año lleno de creátiles, ¡Feliz 2019!"><em>Te deseamos un año lleno de creátiles, ¡Feliz 2019!</em></a></div>
<h1 class="title style-scope ytd-video-primary-info-renderer">Tu felicidad, nuestro objetivo para 2018. ¡Feliz año!</h1>
<div class="videoPosterWrap YouTube" data-video-id="MowZ02nGf4w" data-video-provider="YouTube">   <img decoding="async" src="https://i.ytimg.com/vi/MowZ02nGf4w/hqdefault.jpg" class="videoPoster"/>   <a href="https://www.youtube.com/watch?v=MowZ02nGf4w" class="triggerVideoPoster" title="Tu felicidad, nuestro objetivo para 2018. ¡Feliz año!"><em>Tu felicidad, nuestro objetivo para 2018. ¡Feliz año!</em></a></div>
<h2>Paradigma, más que un equipo. ¡Feliz 2017!</h2>
<div class="videoPosterWrap YouTube" data-video-id="8H1DCkjF-4w" data-video-provider="YouTube">   <img decoding="async" src="https://i.ytimg.com/vi/8H1DCkjF-4w/hqdefault.jpg" class="videoPoster"/>   <a href="https://www.youtube.com/watch?v=8H1DCkjF-4w" class="triggerVideoPoster" title="Paradigma, más que un equipo. ¡Feliz 2017!"><em>Paradigma, más que un equipo. ¡Feliz 2017!</em></a></div>
<h2>¡Gracias por otro año juntos!. Felicitación 2015.</h2>
<div class="videoPosterWrap YouTube" data-video-id="osdqKGPoC_A" data-video-provider="YouTube">   <img decoding="async" src="https://i.ytimg.com/vi/osdqKGPoC_A/hqdefault.jpg" class="videoPoster"/>   <a href="https://www.youtube.com/watch?v=osdqKGPoC_A" class="triggerVideoPoster" title="¡Gracias por otro año juntos!"><em>¡Gracias por otro año juntos!</em></a></div>
<h2>Felicitación navideña de 2014.</h2>
<div class="videoPosterWrap YouTube" data-video-id="BIKvLg5JdJU" data-video-provider="YouTube">   <img decoding="async" src="https://i.ytimg.com/vi/BIKvLg5JdJU/hqdefault.jpg" class="videoPoster"/>   <a href="https://www.youtube.com/watch?v=BIKvLg5JdJU" class="triggerVideoPoster" title="Paradigma Digital - Felicitación navideña de 2014"><em>Paradigma Digital &#8211; Felicitación navideña de 2014</em></a></div>
<h2>Felicitación navideña de 2013.</h2>
<div class="videoPosterWrap YouTube" data-video-id="zgvBR891GW0" data-video-provider="YouTube">   <img decoding="async" src="https://i.ytimg.com/vi/zgvBR891GW0/hqdefault.jpg" class="videoPoster"/>   <a href="https://www.youtube.com/watch?v=zgvBR891GW0" class="triggerVideoPoster" title="Paradigma Digital - Felicitación navideña de 2013 (v. final)"><em>Paradigma Digital &#8211; Felicitación navideña de 2013 (v. final)</em></a></div>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/videos-de-navidad/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Menos tecnologías y más conocimiento</title>
		<link>https://www.vissit.com/menos-tecnologias-y-mas-conocimiento/</link>
					<comments>https://www.vissit.com/menos-tecnologias-y-mas-conocimiento/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Sun, 29 May 2016 16:18:59 +0000</pubDate>
				<category><![CDATA[Sin categoría]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=997</guid>

					<description><![CDATA[Todos sabemos que vivimos en un sector totalmente cambiante, en el que no te puedes quedar atascado, y debes de formarte día a día para no convertirte en un viejo desfasado que siga usando COBOL. Eso está muy bien, pero en lo relativo a Javascript lo estamos llevando un poco al extremo y llevamos ya [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<p>Todos sabemos que vivimos en un sector totalmente cambiante, en el que no te puedes quedar atascado, y <strong>debes de formarte día a día</strong> para no convertirte en un viejo desfasado que siga usando COBOL.</p>
<p>Eso está muy bien, pero en lo relativo a Javascript lo estamos llevando un poco al extremo y llevamos ya unos años en el que <strong>cada día aparecen nuevos frameworks</strong> que parece que se van a comer el mundo. También surgen nuevos lenguajes de programación que supone eliminarán todos los problemas de sus predecesores.</p>
<p>No dudo que cada nuevo framework/librería/lenguaje mejora al anterior, hace nuestra vida más fácil y nos permite desarrollar mejores aplicaciones.</p>
<p><img decoding="async" width="760" height="573" class="aligncenter size-full wp-image-998" src="https://www.vissit.com/wp-content/uploads/2016/05/frameworks_css_js_php.jpg" alt="frameworks_css_js_php" /></p>
<p>Desde el departamento comercial ya se intenta vender los proyectos en la última tecnología que esté de moda, se venden mejor. A los clientes les mola saber que están a la última (hasta dentro de 3 meses, claro), a los desarrolladores también nos gusta trabajar con esas tecnologías de moda, y así  poder añadir una nueva línea a nuestro flamante Curriculum, y <strong>Recursos Humanos no para de buscar gente que sea senior en tecnologías que hace un año ni existían</strong>.</p>
<p>Todo esto está muy bien, genera movimiento en el sector, y hace que no nos acomodemos, pero me da la sensación que también tiene una parte negativa. <strong>Estamos dando más importancia a saber cual es la tecnología que está de moda</strong> este mes y sus peculiaridades, <strong>más que a obtener verdaderos conocimientos de base sobre la programación web</strong>.</p>
<p>Muchas de estos frameworks/librerías/lenguajes cambian profundamente la forma de trabajar y es necesario conocerlas en profundidad para sacarles todo el jugo. Aunque cada una tiene sus particularidades, siempre será mas fácil resolverlo si tenemos una gran base de conocimiento, y buenas nociones sobre las buenas prácticas en la programación (me da igual en que lenguaje).</p>
<p>Cada día estoy más convencido de que<strong> no importa tanto en que lenguaje se desarrolla una aplicación, si no que en tu equipo dispongas de profesionales que sean auténticos seniors en el uso de esa tecnología</strong>, personas que tengan los «huevos pelados» de haber encontrado soluciones a los problemas que surgen en casi todas las aplicaciones.</p>
<p>En cada proyecto me encuentro que «perdemos» tiempo en resolver problemas que ya hemos tenido que resolver en el proyecto anterior, y buscar de nuevo la solución para esta nueva tecnología.</p>
<p>No importa si lo haces con Java, PHP, Python o con Javascript, hazlo del modo que seas más eficiente.</p>
<p>&nbsp;</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/menos-tecnologias-y-mas-conocimiento/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Beneficios de la baja de paternidad en media jornada</title>
		<link>https://www.vissit.com/beneficios-baja-de-paternidad-en-media-jornada/</link>
					<comments>https://www.vissit.com/beneficios-baja-de-paternidad-en-media-jornada/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Tue, 24 Nov 2015 12:05:41 +0000</pubDate>
				<category><![CDATA[Sin categoría]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=980</guid>

					<description><![CDATA[Hace poco más de un mes, así de repente, me cambio la vida de la noche a la mañana. Fui al hospital como un millennial de medio pelo, y ¡volví siendo padre!. Uno nunca acaba de estar preparado para este tipo de acontecimientos, y por mucho que leas y preguntes, una cosa es la sencilla [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<p>Hace poco más de un mes, así de repente, me cambio la vida de la noche a la mañana. Fui al hospital como un millennial de medio pelo, y ¡volví siendo padre!.</p>
<p>Uno nunca acaba de estar preparado para este tipo de acontecimientos, y por mucho que leas y preguntes, una cosa es la sencilla y distante teoría, y otra la inquietante y cercana realidad.</p>
<p>Un recién nacido no hace prácticamente nada, unos ruiditos por aquí, una especie de presunta sonrisilla por alla, un meconio en el peor momento,&#8230;. pero aun así no puedes dejar de pasar horas y horas mirando fijamente a la nueva criatura.</p>
<p>En estos momentos, en los que no quieres hacer nada más que malcriar a tu hijo/a y cuidar de tu mujer, <strong>tienes que hacer frente a algunas otras cosas</strong>&#8230;. el papeleo &#8230; y empezar a tomar algunas decisiones.</p>
<p>Leyendo sobre <a href="http://www.tramitesnacimiento.com/" target="_blank">que debía de hacer para poder disfrutar de la baja de paternidad</a> me encontré con una sorpresa, <strong>la baja se puede disfrutar en forma de medía jornada</strong>. No sabía que se pudiera hacer, y no conozco a nadie que lo haya hecho hasta la fecha, pero me sonó de lo más interesante, y por este motivo, ahora, una vez disfrutada esta baja, escribo este artículo, por si fuera de ayuda a algún futuro padre.</p>
<p><img decoding="async" width="769" height="768" class="aligncenter size-large wp-image-985" style="max-width: 500px;" src="https://www.vissit.com/wp-content/uploads/2015/11/finger-769x768.jpg" alt="finger" srcset="https://www.vissit.com/wp-content/uploads/2015/11/finger.jpg 769w, https://www.vissit.com/wp-content/uploads/2015/11/finger-150x150.jpg 150w" sizes="(max-width: 769px) 100vw, 769px" /></p>
<h2></h2>
<p><span id="more-980"></span></p>
<h2>13 días de baja de paternidad no es nada</h2>
<p>Desde las instituciones no parece que tengan mucho interés en fomentar la natalidad, o por lo menos, no lo toman como algo prioritario. Puede que sus medidas hagan que nazcan muchos más niños, que serán futuros trabajadores y pagadores de impuestos, pero total, ¿qué importa?, estos no les van a votar en las siguientes elecciones, y sería inaudito que algún político hiciera algo con las vistas puestas más haya de las siguientes elecciones.</p>
<p>Que tienen que ampliar esta baja ya lo saben. <a href="http://politica.elpais.com/politica/2014/11/26/actualidad/1417026910_752556.html" target="_blank">Desde 2011 está votada la ley para que la baja de paternidad se amplíe</a> de los dos semanas actuales a cuatro. Pero con la crisis como excusa, se lleva atrasando su puesta en vigor año tras año.</p>
<p>Pero bueno, las leyes son las que son, y no está en el propósito de este artículo cambiar las leyes actuales. Ya vendrán tiempos mejores para la paternidad. Lo que si me gustaría compartir hoy es la posibilidad, con la ley actual, de ampliar estos 15 días de baja a 28 días.</p>
<p>La baja actual es de 15 días, 2 por hospitalización más 13 de baja. Podemos ampliar estas 13 jornadas de baja completa en casa si decidimos reducir nuestra jornada a la mitad, en mi caso trabajar 4 horas. De este modo <strong>podemos ampliar la baja hasta los 26 días</strong> (más los 2 de hospitalización).</p>
<p>En mi opinión, siempre que tu tipo de trabajo así lo permita, esta es una medida que es beneficiosa para todas las partes.</p>
<h2>Beneficios para la madre:</h2>
<p>Por muy bien que vaya el parto, y por muy bueno que sea tu bebe, siempre es complicado y muy cansado hacer frente a los primeros días de cuidado.<strong> El mundo de la crianza de los hijos sigue siendo un mundo muy machista</strong>. Si te quieres informar sobre el embarazo y sobre el cuidado del bebe prácticamente toda la información va dirigida para la madre. Y si como padre te quieres informar de ciertas cosas hasta te hacen sentir un bicho raro.</p>
<p>Cierto es que la madre es lo más importante, y que hay tareas como la alimentación (siempre que decidas dar el pecho), que tienen que hacer ellas sí o sí, pero en muchas otras ocasiones el padre puede ser tan importante como la madre, y poder turnarse en sus cuidados hará que <strong>la madre pueda descansar en más momentos, y así disfrutar más de sus hijos, y no solo cuidarlos</strong>.</p>
<p><strong>Cuanto más tiempo pueda estar el padre en casa, mayor será esta ayuda, y más descargada de tareas estará la madre</strong>.</p>
<p>No sabría decir cuantos días de baja son los apropiados, para poder acompañar a la madre en esta aventura, pero si que sé que 15 días son claramente insuficientes.</p>
<p>Si optas por la baja de media jornada, <strong>tu mujer estará sola en casa 4 horas</strong> (más el tiempo que te lleve el transporte hasta tu trabajo), pero el resto del día podrá disfrutar de tu ayuda y de tu compañía. Esas 4 horas sola pueden ser duras, pero a poco bien que se porte tu bebe, se pasarán muy rápido.</p>
<p>En mi caso yo opté por trabajar de 8:00 a 12:00, y me lleva unos 30 minutos llegar desde casa al trabajo. Total unas 5 horas que estaba fuera de casa, pero al irme tan prontito dejaba a mi mujer dormida. En lo que ella se levantaba, daba de mamar y desayunaba ya casi estaba yo de vuelta en el hogar.</p>
<p>Cada caso será diferente, pero en mi caso <strong>mi mujer ha estado encantada de que haya podido hacer esta media jornada</strong>.</p>
<h2>Beneficios para el padre:</h2>
<p>Yo veo fundamental que el padre se sienta importante en esta fase, y cuanto más pueda colaborar en el cuidado de sus hijos, más beneficiados saldrán todas las partes.</p>
<p>El trabajo es muy importante, y cuando estamos trabajando debemos de estar con todos nuestros sentidos puestos en la empresa, pero es fundamental adaptarnos a esta nueva etapa que se nos viene encima, y <strong>poder estar más días en casa es muy positivo</strong>.</p>
<p>No todo será un jardín de rosas, y también hay que decir que<strong> es duro compaginar trabajo y crianza</strong>, y que cuando suena el despertador da pereza ir al trabajo, sobre todo después de una noche de llantos. Tienes que pensar que tal lo vas a llevar, puede que prefieras estar menos tiempo en casa, pero sabiendo que solo estás en casa, sin preocuparte por el trabajo.</p>
<p>También <strong>es bueno profesionalmente</strong>, ya que al no desconectar del curro, sigues estando presente en las decisiones del día a día, y no corres el riesgo de que se olviden de ti.</p>
<p>Por último, tampoco es nada malo el <strong>salir un rato del ambiente infantil</strong> de cacas, diminutivos y vestiditos en el que de repente te has visto totalmente involucrado. Tener cierto contacto con el mundo adulto te vendrá muy bien.</p>
<h2>Beneficios para la empresa:</h2>
<p>El último vértice de esta fórmula es la empresa, y aunque a priori puede parecer que es la más perjudicada, creo honestamente que <strong>también sale beneficiada</strong> en este asunto.</p>
<p>Digo que sale beneficiada principalmente por <strong>cambiar la jornada partida de 8 horas, por la continua de 4</strong>. Soy de la opinión de que se es mucho más productivo con una jornada continua que con una partida, y parece que <a href="http://www.eleconomista.es/emprendedores-pymes/noticias/6935333/08/15/Las-ventajas-para-las-empresas-de-aplicar-una-jornada-de-trabajo-intensiva.html" target="_blank">varios</a> <a href="http://politica.elpais.com/politica/2014/12/26/actualidad/1419616033_794119.html" target="_blank">estudios</a> <a href="http://www.expansion.com/2009/07/22/mujer-empresa/1248260833.html" target="_blank">confirman</a> mis <a href="http://www.abc.es/economia/20130927/abci-empresas-horario-europeo-201309251751.html" target="_blank">sospechas</a>. Puede que para otros tipos de jornadas puede que los beneficios de esta modalidad no sean tan evidentes.</p>
<p>Con las jornada <em>made in spain</em> creo que <strong>se hacen demasiadas paradas que cortan la productividad</strong>. El desayuno al poquito de llegar, la parada de medía mañana, los cigarritos, el chascarrillo del compañero, la parada de la comida, la meriendilla antes de ir a casa,&#8230;</p>
<p>Al cambio de mentalidad de la jornada partida a la continua debe ser tanto por parte de la empresa como la del trabajador. Con una jornada intensiva, ya sea de 8 o de 4 horas, el trabajador se le transmite que el tiempo que está en el puesto de trabajo debe de estar trabajando. <strong>Cuando trabajas trabaja, y cuando estés fuera del trabajo disfruta de tu familia, amigos y hobbies</strong>. De nada sirve si hacemos el horario de jornada continua pero seguimos con los malos hábitos de la jornada partida. Cada trabajador debe de ser responsable de sus tareas y responder de su productividad.</p>
<p>Los expertos comentan la grandes ventajas que tiene esta jornada:</p>
<ul>
<li>Aumenta la motivación y la implicación de los trabajadores con la empresa.</li>
<li>Ahorro de costes.</li>
<li>Estimula la optimización del tiempo y mejora la planificación.</li>
<li>Permite la conciliación de la vida laboral y personal.</li>
<li>Incrementa la productividad.</li>
<li>&#8230;</li>
</ul>
<p>Por supuesto, cada caso es un mundo y cada empresa también. No en todos los puestos de trabajo se puede uno reducir la jornada, y hay empresas en las que se que te metes es un lio gordo si te propones disfrutar de tus derechos. Yo tengo la inmensa suerte de trabajar en <a href="https://www.paradigmadigital.com/" target="_blank">Paradigma Digital</a>, una empresa que siempre me lo ha puesto muy fácil, y en la que da gusto trabajar. Este caso tampoco fue una excepción, me permitió reducir mi jornada a 4 horas, y creo que ambos salimos favorecidos por ello.</p>
<p>Y vosotros, ¿Tenéis alguna experiencia con vuestras bajas de paternidad o con reducciones de jornada?</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/beneficios-baja-de-paternidad-en-media-jornada/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Guía para los z-index</title>
		<link>https://www.vissit.com/guia-para-los-z-index/</link>
					<comments>https://www.vissit.com/guia-para-los-z-index/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Thu, 09 Jul 2015 10:15:21 +0000</pubDate>
				<category><![CDATA[escribimos]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=967</guid>

					<description><![CDATA[He creado esta guía con la intención de ser coherente con los z-index que uso en mis maquetación. Al poner un nuevo z-index en mis aplicaciones siempre tengo la sensación de que no va a ser el más correcto. Espero que a partir de ahora esta guía me solucione estos problemas, y ojala los vuestros [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<p>He creado esta guía con la intención de ser coherente con los z-index que uso en mis maquetación. Al poner un nuevo z-index en mis aplicaciones siempre tengo la sensación de que no va a ser el más correcto.</p>
<p>Espero que a partir de ahora esta guía me solucione estos problemas, y ojala los vuestros también.</p>
<p><img loading="lazy" decoding="async" width="769" height="468" class="aligncenter size-large wp-image-968" src="https://www.vissit.com/wp-content/uploads/2015/07/zindex_guide-769x468.png" alt="zindex_guide" /></p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/guia-para-los-z-index/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Adiós TimThumb, la seguridad es lo primero</title>
		<link>https://www.vissit.com/adios-timthumb-la-seguridad-es-lo-primero/</link>
					<comments>https://www.vissit.com/adios-timthumb-la-seguridad-es-lo-primero/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Fri, 05 Jun 2015 09:49:47 +0000</pubDate>
				<category><![CDATA[Sin categoría]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=963</guid>

					<description><![CDATA[Hoy, con todo el dolor de mi corazón, he empezado a despedirme del plugin TimThumb, para la redimensión de imágenes. Lo venia usando en todos mis wordpress, pero debido a vulnerabilidades en la creación de las imágenes ya he sido atacado por nuestros amigos los rusos en varias ocasiones. Al final he optado por remplazarlo [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<p>Hoy, con todo el dolor de mi corazón, he empezado a despedirme del plugin <a href="https://code.google.com/p/timthumb/" target="_blank">TimThumb</a>, para la redimensión de imágenes.</p>
<p>Lo venia usando en todos mis wordpress, pero debido a vulnerabilidades en la creación de las imágenes ya he sido atacado por nuestros amigos los rusos en varias ocasiones.</p>
<p>Al final he optado por remplazarlo por <a href="http://matthewruddy.github.io/Wordpress-Timthumb-alternative/" target="_blank">esta otra función</a> que usa funcionalidades nativas de wordpress para hacer estas tareas. De momento parece igual de sencilla que TimThumb, y parece que no tiene vulnerabilidades conocidas.</p>
<p>Espero que este cambio aleje a los hackers rusos de mis webs.</p>
<p>Os iré informando.</p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/adios-timthumb-la-seguridad-es-lo-primero/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Insertar parámetros en URL con Javascript</title>
		<link>https://www.vissit.com/insertar-parametros-en-url-con-javascript/</link>
					<comments>https://www.vissit.com/insertar-parametros-en-url-con-javascript/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Wed, 17 Dec 2014 08:39:03 +0000</pubDate>
				<category><![CDATA[escribimos]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=944</guid>

					<description><![CDATA[function insertParam(uri, key, value) { if (key.toString().indexOf(",") &#62; -1) { key = key.split(","); } if (value.toString().indexOf(",") &#62; -1) { value = value.split(","); } if ( _.isArray(value) ) { _.each(value, function (val, index) {http://localhost/produban/areaHome.php# uri = insertParamCore(uri, key[index], val); }); } else { uri = insertParamCore(uri, key, value); } return uri; } function insertParamCore(uri, key, value) [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<pre>function insertParam(uri, key, value) {
    if (key.toString().indexOf(",") &gt; -1) {
        key = key.split(",");
    }
    if (value.toString().indexOf(",") &gt; -1) {
        value = value.split(",");
    }

    if ( _.isArray(value) ) {
        _.each(value, function (val, index) {http://localhost/produban/areaHome.php#
            uri = insertParamCore(uri, key[index], val);
        });
    } else {
        uri = insertParamCore(uri, key, value);
    }

    return uri;
}

function insertParamCore(uri, key, value) {
    var re = new RegExp("([?&amp;])" + key + "=.*?(&amp;|$)", "i");
    var separator = uri.indexOf('?') !== -1 ? "&amp;" : "?";
    if (uri.match(re)) {
        return uri.replace(re, '$1' + key + "=" + value + '$2');
    }
    else {
        return uri + separator + key + "=" + value;
    }
}
</pre>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/insertar-parametros-en-url-con-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Attempt to get responsive images</title>
		<link>https://www.vissit.com/attempt-to-get-responsive-images/</link>
					<comments>https://www.vissit.com/attempt-to-get-responsive-images/#respond</comments>
		
		<dc:creator><![CDATA[Jaime Fernández]]></dc:creator>
		<pubDate>Wed, 10 Dec 2014 11:26:56 +0000</pubDate>
				<category><![CDATA[escribimos]]></category>
		<guid isPermaLink="false">http://www.vissit.com/?p=934</guid>

					<description><![CDATA[I&#8217;m trying to create an easy method to get responsive images for my web sites. Check it working on this demo page. In this case I&#8217;m gonna show I&#8217;ll get responsive background for an specific panel. &#60;div data-responsive-bg="360,[IMG_MEDIUM];768,[IMG_BIG]"&#62;style="background-image:url([IMG_SMALL]);"&#62; By default the panel will show an small version of the image. As this image has a [&#8230;]<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

No hay ningún artículo relacionado.
</div>
]]></description>
										<content:encoded><![CDATA[<p>I&#8217;m trying to create an easy method to get responsive images for my web sites.</p>
<p>Check it working on this <a href="https://www.vissit.com/projects/responsiveImages/" target="_blank">demo page</a>.</p>
<p>In this case I&#8217;m gonna show I&#8217;ll get responsive background for an specific panel.</p>
<pre>&lt;div data-responsive-bg="360,[IMG_MEDIUM];768,[IMG_BIG]"&gt;style="background-image:url([IMG_SMALL]);"&gt;
</pre>
<p>By default the panel will show an small version of the image. As this image has a smaller weight, it&#8217;ll make the page load faster. For small devices we&#8217;ll keep it like that, but with Javascript the plugin search, depending of the panel width, if we provide a better image for this case.</p>
<p>With jQuery the plugin search all the panels that has an attribute: data-responsive-bg. This attribute show in key,value format all the different versions of the image that we are gonna provide. In the previous case we have two image:</p>
<ul>
<li>[IMG_MEDIUM] to be show when the panel is wider than 360 pixels</li>
<li>[IMG_BIG] to be show when the panel is wider than 768 pixels</li>
</ul>
<p><span id="more-934"></span></p>
<pre>function setResponsiveImages() {
    $('[data-responsive-bg]').each(function () {
        var t = $(this),
            w = t.width(),
            data = t.data('responsive-bg'),
            measure, size, url;

        data.split(';').forEach(function(measure) {
            measure = measure.split(',');
            size = measure[0];

            if ( w &gt; size ) {
                url = measure[1];
            }
        });

        if ( url ) {
            t.css('background-image', 'url('+url+')');
        }
    })
}
</pre>
<p>I use this method to init this function, an check it again when user change the window width:</p>
<pre>var canvasResize = 0;
$(window).resize(function(){
    clearTimeout(canvasResize);
    canvasResize = setTimeout(function(){
      setResponsiveImages();
    }, 200);
});
$(window).resize();
</pre>
<p>You can check it working on this <a href="https://www.vissit.com/projects/responsiveImages/" target="_blank">demo page</a>.</p>
<p><a href="https://www.vissit.com/projects/responsiveImages/"><img loading="lazy" decoding="async" width="600" height="300" class="aligncenter size-full wp-image-935" src="https://www.vissit.com/wp-content/uploads/2014/12/responsiveTest_medium.jpg" alt="responsiveTest_medium" /></a></p>
<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>No hay ningún artículo relacionado.</p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.vissit.com/attempt-to-get-responsive-images/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Almacenamiento en caché de páginas con Disk: Enhanced (SSL caching disabled) 
Minified using Disk
Caché de base de datos 44/110 consultas en 0.031 segundos usando Disk

Served from: www.vissit.com @ 2026-03-30 14:47:47 by W3 Total Cache
-->