Ao usar certos navegadores, redimensionar a janela do navegador chama a função associada a esse evento duas vezes. Aqui está uma solução simples para chamar a função apenas uma vez.
A ideia básica é definir um tempo limite para chamar a função após um certo tempo (meio segundo aqui, depende da velocidade de execução do navegador) e, então, quando a mesma função for chamada pela segunda vez pelo navegador, ele limpará o chamada de função conforme descrito acima. Mas, ao mesmo tempo, definirá um tempo limite para chamar a mesma função novamente e, portanto, a função será executada apenas uma vez .
var timeoutId;
window.onresize = function(){
window.clearTimeout(timeoutId);
//call the function after half second
timeoutId = window.setTimeout(doSomething, 500);
}
function doSomething(){
console.log("You should see this once.");
//do something here
}