[Resolvido]Problema com navegador Google Chrome - Javascript - Portugal-a-Programar
[Resolvido]Problema com navegador Google Chrome
By flavio_jeronimo, January 18, 2011 in Javascript
Boa tarde eu tenho o problema com este script quando o executo no Google Chrome:
var answer = confirm("deseja mesmo comprar?")
alert("compra efectuado com sucesso!");
location.href = "http://www.projecto.net84.net/site/index.php?pag=a";
alert("compra nao efectuada");
Bem o mais extraordinário e que no mozilla ele funciona perfeitamente.
Não disseste qual era o problema, mas parto do princípio que ele não salta para a página, certo?
Lamento informar-te, mas o Chrome é que está certo; não existe nenhum objecto location imediatamente disponível, é uma propriedade do objecto window.
Além disso, muito cuidado com este tipo de código! Alguns browsers e, sobretudo, alguns motores de busca, não gostam nem um bocadinho desta brincadeira - certifica-te que a função confirmation() é sempre chamada de um botão ou de um link.
Finalmente, teres o alert() depois do redireccionamento não faz sentido; é possível que os browsers ainda o mostrem (afinal, a execução do JS é DOM blocking), mas também é possível que dê granel.
Sim o problema e mesmo nao redirecionar para a pagina mas no mozzila funciona, O confirmation() faz parte do meu form em php que deixo aqui:
form name="myform" action="index.php?pag=comprar" method="post">
<b><font face="Berlin Sans FB" color="#FFFFFF">Se desejar comprar algum dos espetaculos disponiveis selecione-o na lista
abaixo.</font></b></p>
<select name="d1" style="width: 300px;" >
<input type="submit" onclick="confirmation()" value="Comprar" name= "vender"  />
Quando eu mudo o alert para cima do ciclo else e meto o location.href = "http://www.projecto.net84.net/site/index.php?pag=a" em baixo não e feito o redireccionamento.
Não tens que meter location.href, tens que meter window.location.href. O Firefox é que é mais tolerante para com erros deste género.
E não tens que tirar o alert() do else (que não é um ciclo, faz parte da instrução if - ciclos são for, foreach, while), só tens que o passar para trás do redireccionamento, e é apenas por uma questão lógica, porque o código até era capaz de funcionar à mesma.
E falta ainda outro pormenor: tens que devolver false da função, porque alguns browsers podem tentar seguir com o submit do formulário no caso de falhar alguma coisa. Na dúvida, é melhor não facilitar.
Pronto, pega lá:
window.location.href = "http://www.projecto.net84.net/site/index.php?pag=a";
Fiz todas as alterações que referiste acima o problema e que quando eu no mozilla faço cancel ele executa na mesma o form e segue para pagina como se tivesse carregado sim.
Mozilla não é um browser. Mozilla é um projecto cujo o código é o core de vários browsers, Google Chrome, Seamonkey, Firefox...(blá blá blá).
Em qual deles é que dá problemas?
Neste momento quando puxei no else o alert para cima do windows.location, deixou de fazer envio para pagina a.php que corresponde ao botao "cancelar" e o script passa a submeter a form.
Vou tentar explicar melhor eu tenho uma form em php com o action para a pagina comprar.php, mas essa form só deveria executar se eu carregasse na msgbox no botão sim. O que se passa e que quando eu carrego no botão cancelar não deveria ir para o comprar, mas sim para a pagina mas isso não acontece. Irei disponibilizar aqui o código para ajudar:
<b><font face="Berlin Sans FB" color="#FFFFFF">
Se deseja informaçoes sobre algum espetaculo:</font></b></p>
<input type="submit" value="obter informações" name= "vendeer"/>
<form name="myform" action="index.php?pag=comprar" method="post">
http://javascript.gakaa.com/event-preventdefault-4-0-5-.aspx
segundo a especificação do javascript não é retornar false que evita o predefinido, é usar o método preventDefault();
Actually .. o false dentro de uma função activa o preventDefault() e o stopPropagation()
Não é isso o que eu lí mas se tens a certeza disso pode ser q esteja enganado...
Sim, é real. Retornar false num evento, mata-o.
Mas ainda bem que falaste nisso, porque dei logo com o erro:
<input type="submit" onclick="return confirmation();" value="Comprar" name= "vender"  />
Faltava o return na chamada ao evento...
Boas eu tenho um problema com o motor de pesquisa pois no mozilla a minha form e submetida quando faço ok no Javascript e no google crhome isso nao acontece e não sei porque.
o meu codigo e o seguinte:
<?php if($_SESSION['log'] == ""): ?>
window.location.href = "http://projecto.net84.net/site/index.php?pag=espetaculos";
O google chrome funciona a Mozilla.... Afinal qual é o problema? O que escreves contradiz...
Preciso de ir confirmando as minhas fontes... Parece que o chrome n funciona a mozilla.
De qq modo verifica o error console/log dos browsers em causa. Tem algum erro?
Aparece algum popup do javascript?
Será que deveria ser return true na função confirmation()?
As tags head e body estão correctamente colocadas em relação ao código que é suposto aparecer para o utilizador e código para o head da página (o que está entre <body> e </body> parece ser mto pouco)?
o problema basicamente e de nao submeter a form na magbox em javascript quando faço "ok" google crhome enquanto que no mozzila esta funcional.
flavio_jeronimo, se o código da tua página é esse, tens sorte de ainda funcionar nalguns browsers! Tens esse código todo dentro do head da página; a tua sorte é que os motores de render são uns fixolas e ajustam a DOM... Mete lá isso de forma conveniente, e depois logo se vê se continua a não funcionar...
O google chrome funciona a Mozilla....
brunoais, por amor da santa, se não sabes, não inventes. Podes levar os membros menos experientes ao engano. No Google Chrome, o motor de render é o WebKit e de javascript é o V8; nos browsers Mozilla (como o Firefox), o motor de render é o Gecko e de javascript é o TraceMonkey. Nada que ver um com o outro.