quinta-feira, 21 de fevereiro de 2013

Gifs para loading

Um dia estava precisando de um gif para loading e achei vários site que disponibilizavam download mas, o que mais me interessou foi o site:

http://www.ajaxload.info/

Nesse site é possível você escolher um tipo de gif e personalizá-lo, mudar sua cor e por ai vai. Depois de escolher as características de seu gif é só gerá-lo e fazer o download. Ferramenta muito útil e ótimo quebra galho.
Leia Mais ››

segunda-feira, 18 de fevereiro de 2013

Chamdas de funções nos browsers

Esse tópico é algo muito curioso e particular do IE6. Em javascript é possível tem uma função recebendo x parâmetros, onde x é um número maior que 0 e é possível chamá-la não passando todos os parâmetros, segue exemplo:

function foo(param1, param2, param3){
/*código*/
}

function foo2(){
      foo("a", "b");

}

Note que só passei dois paramêtros na chamada de foo em foo2, quando todo esse código for executado o que virá como valor no param3?

É aí que entra a grande questão. Nos browsers ie7( e versões superiores), firefox, chrome, opera e safari o parâmetro que falta vai com o valor de "undefined" para a função foo(), porém no ie6 ele usa o último valor da pilha de chamada de função.

COMO ASSIM ?

O ie6 usa o último valor de parâmetro passado quando ele nota que numa função que recebe x parâmetros são passados menos que x. Um exemplo deve esclarecer as coisas.

Vamos continuar utilizando a função foo() definida lá em cima.

function foo3(){
    foo('a', 'b', 'c');
   /*codigo*/
   foo('a', 'b');
}

Na segunda chamada de foo, o valor de param3 virá como 'c' mesmo eu não tendo passado nada para ele na segunda chamada, logo ele utiliza o último valor da pilha de chamadas de funções. Isso pode causar problemas em seus scripts quando você quer construir um sistema que rode em todos os browsers. Uma das soluções para esse problema é sempre passar todos os parâmetros ou forçar a passada de "undefined" para a função.
Leia Mais ››