Jump to content
Diogo Dias

Variáveis de sessão locais

Recommended Posts

Diogo Dias

Boas a todos.

O meu problema é fácil de explicar, mas até agora difícil de resolver para mim.

Eu basicamente tenho uma variável que contém o idioma da aplicação. Quando escolho num select um novo idioma, altero o valor da variável e depois faço refresh da página. O problema é que ao fazer refresh à página, perco o valor da minha variável e não sei qual é o idioma corrente.

Já tentei meter a variável como global usando o window, mas mesmo assim ela faz reset. O que encontrei mais na net foi para usar variáveis de sessão. Mas para isso teria de usar PHP ou ASP ou outras linguagens. Não existe nenhuma forma de usar variáveis de sessão locais em Javascript?

Talvez seja também importante referir que estou a usar HTML e Javascript, mas a aplicação será feita para com o objectivo de funcionar em PhoneGap, ou seja, dispositivos com sistema Android.

Share this post


Link to post
Share on other sites
Diogo Dias

O problema é que sou totalmente novo nisto e não consegui ainda fazer uma coockie em Javascript. Todos os sites que encontrei sobre criar coockies em Javascript, tentei fazer com uma pequena página em HTML, mas nunca consegui pôr a funcionar.

Se me pudesses dar umas ideias de como é o código para isso agradecia.

Ok, encontrei um bom site que explica tudo. Pode ser que acabe por me safar com isto. Obrigado pela ajuda ;)

Ok deparei-me com uma situação bastante estranha...

O site que antes referi é este --> http://www.w3schools.com/js/js_cookies.asp

Quando meto para testar o código no site, ele funciona perfeitamente.

Mas quando meto esse código (sem mexer um único caracter) no notepad e crio uma página HTML de teste, ele não funciona. O que acontece é que a cookie fica sempre vazia. Isto não tem lógica nenhuma do meu ponto de vista.

Edited by Diogo Dias

Share this post


Link to post
Share on other sites
I-NOZex

usas o notepad puro? (bloco de notas do windows)

usa antes o notepad++ ou pspad (ambos bons editores de codigo e gratuitos) e guarda com a codificação utf8 without BOM

nao sei que browser usas, para o firefox recomendo o addon Cookies Manager +, caso uses o chrome decerteza que tens alternativas, procuras na store por cookies, e verifica se defacto a cookie não é criada, atraves do addon (extra) que usares

no entanto pedia-te para deixares aqui o codigo html que tens, pode ter-te escapado algo.

Edited by I-NOZex
  • Vote 1

B2R » Beat2Revolution v3.0b | Regista e divulga-nos

beat2revolution.net

Share this post


Link to post
Share on other sites
Diogo Dias

O browser em que estou a testar é o Google Chrome. Mas testo também um dispositivo com android para me aproximar mais de numa situação real.

Quando fui correr a aplicação em android, ele também não me guardava as cookies.

Eu testo isto no Google Chrome, mas se não funcionar no browser e funcionar em android, não tem problema nenhum.

A aplicação tem como único destino os dispositivos com android.

Eu disse notepad porque foi apenas copiar o código daquele site e testar, mas utilizo o notepad++ para trabalhar.

O código é este. Esta é a listview que vai alterar o idioma actual. (antes referi que era um select porque funciona dessa forma pelo facto de ser um popup menu)

O que acontece é que ele altera com sucesso o idioma, e se navegar para as seguintes páginas da aplicação, ele traduz todos os textos.

O problema é que após alterar o idioma, eu queria que fosse feito refresh à página para que automaticamente esta página actual também ficasse traduzida.

Mas era aí que tinha problemas, a variável "window.lang" ficava vazia.

<div data-role="popup" id="popupMenu">
<ul data-role="listview" data-inset="true" >
 <li data-role="list-divider"  data-theme="a">Idioma</li>
 <li><a href="javascript:;" class="menuItem" onclick="window.lang = 'PTPT';">PT-PT</a></li>
 <li><a href="javascript:;" class="menuItem" onclick="window.lang = 'ENEN';">EN-EN</a></li>
 <li><a href="javascript:;" class="menuItem" onclick="window.lang = 'ESES';">ES-ES</a></li>
 <li><a href="javascript:;" class="menuItem" onclick="window.lang = 'FRFR';">FR-FR</a></li>
</ul>
</div>

Share this post


Link to post
Share on other sites
Diogo Dias

Consegui resolver o problema.

Bastou-me utilizar o localStorage que permite que as variáveis não façam reset durante o refresh das páginas.

Permite também que as variáveis continuem "vivas" durante o tempo em que aplicação está terminada. isto foi algo que não estava à espera de fazer, mas já que acontece vou aproveitar para memorizar preferências.

Obrigado por tudo I-NOZex ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.