Ir para o conteúdo
Nazgulled

Verificar se o Javscript está activo no browser

Mensagens Recomendadas

Nazgulled    8
Nazgulled

Qual será a forma mais fácil, simples e elegante de verificar se o Javascript se encontra activo no browser e em caso contrário, mostrar uma mensagem de erro?

Atenção, não me interessa se o browser suporta ou não Javascript, apenas se esta activo, se não suportar, não estará a activo e a mensagem será a mesma.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Eu vi num site em que ele criam 1 cookie com JS e depois verificam se o cookie existe com PHP :)

Boa ideia... :) Thanks!

Se mis alguém tiver outras ideias, são bem vindas...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Mas tipo, e se eu quiser verificar se o Javascript está activo de cada vez que uma página é carregada? A minha ideia inicial seria, criar o cookie em JS, em PHP verificar se existe e se existir, apaga-lo de seguida para que na próxima vez, seja possível criar o cookie de novo.

Que acham? Ou será que tem ideias pa uma solução melhor?

Basicamente o que estou a fazer é um site que usa bastante Javascript e não vai funcionar sem ele, está mesmo fora de questão. Ou seja, eu quero saber em qualquer altura que qualquer página seja carregada, se o JS está activo ou não, se não estiver, quero mostrar uma página diferente no browser com mensagem de erro sem permitir acesso a mais nada.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Epá, já que é algo que precisa mesmo de JavaScript, podes fazer algo assim:

<html>
<head>
<script type="text/javascript">
document.getElementsByTagName("body")[0].innerHTML = 'oix';
</script>
</head>
<body>
O seu browser não suporta JavaScript.
Faça download do firefox: getfirefox.com
</body>
</html>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Então acho que definir um cookie com JavaScript e tirares o cookie com PHP a cada request serve. Claro está, pressuponho que vais ter que visitar alguma página primeiro.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Imagina que tens isto:

if($_COOKIE['js_enabled'] != 'yes') die("Já mandei ali em cima nesta resposta código javascript para fazer verificação. Anyway, não detectei o JavaScript activo quando fizeste o pedido");

Se tiveres a ir directo ao link, ele manda o code JavaScript e só vais ter o cookie (mesmo que o JavaScript esteja activo) quando fizeres o 2o request.

Esquema:

Cliente (JavaScript activo, ainda não fez nenhum request)

|

| pede página que precisa de JavaScript

|

\/

Server (não recebeu o cookie definido por javascript, o código nunca foi executado... mas ele não sabe disso)

|

| manda a resposta a dizer que não tem JavaScript activo, mas manda o código de verificação

|

\/

Cliente (recebe o código e gera o cookie. o utilizador pede a página outra vez)

|

| manda o pedido já com o cookie

|

\/

Server (só agora é que recebe o cookie, manda agora a página que precisa de JavaScript)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Sinceramente? Não percebi nada do que disseste... Nem tão pouco percebi a intenção porque a cena do JS + Cookie + PHP eu sei como fazer.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Ok, não me consegui explicar... Detesto quando isto acontece.

O que eu estava a tentar dizer é que, se fizeres a verificação do lado do servidor sem teres visitado uma página que te crie o cookie no cliente, isso vai ficar buggy e só vai passar na verificação no refresh seguinte.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Sim, já percebi.

E agora que penso nisso que dizes, realmente, o que ia fazer não ia funcionar e ia ter esse bug que falas. Nem se quer tinha pensado exactamente como iria implementar isso apenas achei a ideia dada pelo magician interessante e como de momento não tenho tempo para isto, nem se quer me dei ao trabalho de pensar.

Isto assim estraga-me os planos para fazer exactamente o que eu queria... Não quero estar a fazer sempre 2 requests sempre que o utilizador clica num link. Mas depois penso nisso, agora não estou com paciência e tenho de estudar. Mas se tiverem ideias...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Fácil. Dás uma sessão ao utilizador e espetas-lhe uma variável isFirstRequest. Se for, mandas uma página com código para fazer refresh à página caso o JavaScript esteja activo (usando o window.location.refresh() por exemplo).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
softklin    12
softklin

Não te serve assim?

<div id="msgerr">O seu browser não tem JS</div>
<script type="text/javascript">
<!--
document.getElementById('msgerr').innerHTML="O seu browser suporta JS, parabéns";
-->
<script>

Por prredefinição assumimos que não suporta. Caso suporte, a mensagem é substituida pela mensagem "o seu browser. suporta JS parabens".

há inumeras maneiras de resolver isso... cookies, mensagens, alerts... é so escolher o que melhotr se adpata à situação

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

Já expliquei que no meu caso o site vai usar JS extensivamente e o site não funciona sem ele. Pelo que eu quero ter maneira de verificar se o JS está activo ou não em cada request que seja feito em qualquer página que o utilizador esteja aceder. E quero-o programar de forma que possa fazer: if activo then do this else do that.

Neste momento, a forma + indicada é criação de cookie em JS e verificar no PHP, só não sei como dar a volta ao problema apontado pelo djthyrax.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

E se o javascript não estiver activo? Fica uma página em branco...

Mandas a mensagem de erro na mesma, e mandas código JavaScript para tirar a mensagem de erro (document.getElementsByTagName("body")[0].innerHTML = 'Aguarde...';). 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade