22
Abr
08

Problemas com COOKIES no Internet Explorer

Alguns desenvolvedores já devem ter se deparado com essa situação: grava-se um arquivo de cookie com vários pares de informações para serem recuperadas posteriormente e quando se lê o arquivo têm-se a decepção de não ver todos os dados gravados.

Isso ocorre pelo Internet Explorer gravar o arquivo de cookies com apenas 4kb e o limite de 20 pares. Isso dificulta o desenvolvimento de aplicações, gerando uma sobrecarga nos servidores com a aplicação de sessions. E qual seria a solução mais prática? Gravar os cookies à partir de outro path, mais com isso seria preciso a criação da referida página do path para poder ler os cookies. Cookies gravados por JavaScript são diferentes dos gravados com ASP, PHP ou CFML.

Mas a solução é bem mais simples, não requer conhecimentos avançados de programação, pois se o desenvolvedor lê e grava cookies não terá dificuldade de aplicar essa técnica. Consiste em concatenar as informações e posteriormente decupando cada uma para serem usadas na página.

No Codeorama OS todas as coordenadas dos ícones no desktop são gravadas em 1 entrada apenas de cookies, assim tenho mais 19 entradas para utilizar no Internet Explorer, se fosse gravar cada coordenada de ícone separadamente teria os 20 pares ocupados, não podendo gravar mais configurações como tema de ícones, desktop, papel de parade, etc.

Exemplo: Coordenadas dos ícones no Codeorama OS
São 10 ícones no desktop com 2 informações cada: posição X e Y. Então para gravar apenas 1 cookie com toda informação referente as coordenadas, basta utilizar de 2 separadores.

string_gravar = “0,0|10,10|20,20″

Nesse exemplo foi utilizado o “|” (pipe) para separar cada ícone e a “,” (vírgula) para separar os valores de X e Y de cada ícone.

Após gerar sua string, grave um cookie normalmente com o nome que desejar. Para recuperar o cookie utilize o código abaixo, ele está documentado e foi elaborado da forma mais simples para entendimento de todos.

var str = getCookie(”coordenadas”); // PEGA O VALOR DO COOKIE
var seq = new Array(); // CRIA ARRAY ONDE FICARÁ CADA ICONE SEPARADAMETE
seq = str.split(”|”); // SEPARA A STRING DO COOKIE EM PARTES, USANDO O PIPE COMO SEPARADOR

var icon0 = new Array(); // CRIA ARRAY ONDE FICARÃO O X E Y DE CADA ICONE SEPARADAMETE
icon0 = seq[0].split(”,”); // SEPARA A STRING DO COOKIE EM PARTES, USANDO A , COMO SEPARADOR

var icon1 = new Array(); // CRIA ARRAY ONDE FICARÃO O X E Y DE CADA ICONE SEPARADAMETE
icon1 = seq[1].split(”,”); // SEPARA A STRING DO COOKIE EM PARTES, USANDO A , COMO SEPARADOR

var icon2 = new Array(); // CRIA ARRAY ONDE FICARÃO O X E Y DE CADA ICONE SEPARADAMETE
icon2 = seq[2].split(”,”); // SEPARA A STRING DO COOKIE EM PARTES, USANDO A , COMO SEPARADOR

A separação não é complicada. Cria-se o ARRAY e depois aplicamos na variável a string a ser separada mais .split(”SEPARADOR”), com isso teremos todos os valores entre cada incidência do caracter separador no ARRAY, podendo ser recuperado cada valor da seguinte maneira: nome_do_array[numero], onde numero representa um número entre 0 (o primeiro número do seu array onde está o primeiro valor da string sempre será 0) e n (onde n é o último número de strings que foram criadas no array). Para facilitar, existe o comando: nome_do_array.length .

No exemplo acima para se utilizar as coordenadas ficaria assim:

changePosition(”icone000″, parseInt(icon0[0]), parseInt(icon0[1]), true);
changePosition(”icone001″, parseInt(icon1[0]), parseInt(icon1[1]), true);
changePosition(”icone002″, parseInt(icon2[0]), parseInt(icon2[1]), true);

Mas e nos outros navegadores?! A única limitação que possuem é de gravar um arquivo com 4kb e isso é mais que suficiente.

Acesse Codeorama OS e veja esse recurso aplicado na prática.


0 Respostas para “Problemas com COOKIES no Internet Explorer”


  1. Não Há Comentários

Deixe um comentário




 

Abril 2008
S T Q Q S S D
« Mar   Mai »
 123456
78910111213
14151617181920
21222324252627
282930  

Categorias