Ir para conteúdo


Revista PROGRAMAR – Edição 46 (Setembro 2014): Download já disponível!

- - - - -

[Resolvido]Problema com navegador Google Chrome


  • Por favor inicie sessão para responder
23 respostas a este tópico

#1 flavio_jeronimo

flavio_jeronimo

    Boolean User

  • Membro
  • PipPipPip
  • 105 mensagens

Publicado 18 de Janeiro de 2011 - 20:03

Boa tarde eu tenho o problema com este script quando o executo no Google Chrome:


Código (Javascript):
<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">
function confirmation() {
        var answer = confirm("deseja mesmo comprar?")
        if (answer){
                alert("compra efectuado com sucesso!");
                document.myform.submit();
                }
else{
location.href = "http://www.projecto.net84.net/site/index.php?pag=a";
alert("compra nao efectuada");
}
}
</script>

Bem o mais extraordinário e que no mozilla ele funciona perfeitamente.

#2 mjamado

mjamado

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 2135 mensagens

Publicado 18 de Janeiro de 2011 - 20:11

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.

#3 flavio_jeronimo

flavio_jeronimo

    Boolean User

  • Membro
  • PipPipPip
  • 105 mensagens

Publicado 18 de Janeiro de 2011 - 21:03

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:

Código (PHP):
form name="myform" action="index.php?pag=comprar" method="post">
<p>
<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;" >
    <option value="1">galinhas</option>
    <option value="2">bodes</option>
</select>
<input type="submit" onclick="confirmation()" value="Comprar" name= "vender"  />
</form>

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.

#4 mjamado

mjamado

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 2135 mensagens

Publicado 18 de Janeiro de 2011 - 21:47

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á:

Código (Javascript):
function confirmation()
{
    var answer = confirm("deseja mesmo comprar?")
    if(answer)
    {
        alert("compra efectuado com sucesso!");
        document.myform.submit();
    }
    else
    {
        alert("compra nao efectuada");
        window.location.href = "http://www.projecto.net84.net/site/index.php?pag=a";
    }

    return false;
}


#5 flavio_jeronimo

flavio_jeronimo

    Boolean User

  • Membro
  • PipPipPip
  • 105 mensagens

Publicado 19 de Janeiro de 2011 - 18:05

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.

#6 brunoais

brunoais

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3359 mensagens

Publicado 19 de Janeiro de 2011 - 18:38

Ver Mensagemflavio_jeronimo, em 19 de Janeiro de 2011 - 18:05, disse:

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?

#7 flavio_jeronimo

flavio_jeronimo

    Boolean User

  • Membro
  • PipPipPip
  • 105 mensagens

Publicado 19 de Janeiro de 2011 - 20:20

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.

#8 brunoais

brunoais

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3359 mensagens

Publicado 19 de Janeiro de 2011 - 20:31

Ver Mensagemflavio_jeronimo, em 19 de Janeiro de 2011 - 20:20, disse:

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.
Não percebi

#9 flavio_jeronimo

flavio_jeronimo

    Boolean User

  • Membro
  • PipPipPip
  • 105 mensagens

Publicado 19 de Janeiro de 2011 - 20:46

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:

Código (PHP):
<form name="form" action="" method="post">
<p>
<b><font face="Berlin Sans FB" color="#FFFFFF">
Se deseja informaçoes sobre algum espetaculo:</font></b></p>

<select name="d1" style="width: 300px;" >
    <option value="1">galinhas</option>
    <option value="2">bodes</option>
</select>

<input type="submit" value="obter informações" name= "vendeer"/>
</form>

<form name="myform" action="index.php?pag=comprar" method="post">
<p>
<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;" >
    <option value="1">galinhas</option>
    <option value="2">bodes</option>
</select>
<input type="submit" onclick="confirmation()" value="Comprar" name= "vender"  />
</form>

<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">
function confirmation()
{
    var answer = confirm("deseja mesmo comprar?")
    if(answer)
    {
        alert("compra efectuado com sucesso!");
        document.myform.submit();
    }
    else
    {
       
        alert("compra nao efectuada");
        window.location.href = "http://www.projecto.net84.net/site/index.php?pag=a";
    }

    return false;
}

</script>


#10 brunoais

brunoais

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3359 mensagens

Publicado 19 de Janeiro de 2011 - 20:50

Vê isto:
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();

#11 yoda

yoda

    Stack Overflow

  • Moderador
  • PipPipPipPipPipPipPip
  • 5520 mensagens

Publicado 19 de Janeiro de 2011 - 21:19

Ver Mensagembrunoais, em 19 de Janeiro de 2011 - 20:50, disse:

Vê isto:
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()

#12 brunoais

brunoais

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3359 mensagens

Publicado 19 de Janeiro de 2011 - 21:41

Ver Mensagemyoda, em 19 de Janeiro de 2011 - 21:19, disse:

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...

#13 mjamado

mjamado

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 2135 mensagens

Publicado 19 de Janeiro de 2011 - 22:45

Ver Mensagembrunoais, em 19 de Janeiro de 2011 - 21:41, disse:

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:

Código (HTML):
<input type="submit" onclick="return confirmation();" value="Comprar" name= "vender"  />

Faltava o return na chamada ao evento...

#14 flavio_jeronimo

flavio_jeronimo

    Boolean User

  • Membro
  • PipPipPip
  • 105 mensagens

Publicado 24 de Janeiro de 2011 - 09:43

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:

Código (PHP):
<html>
<head>
<?php if($_SESSION['log'] == ""): ?>
<form name="form" action="" method="post">
<p>
<b><font face="Berlin Sans FB" color="#FFFFFF">
Se deseja informaçoes sobre algum espetaculo:</font></b></p>

<select name="d1" style="width: 300px;" >
    <option value="1">galinhas</option>
    <option value="2">bodes</option>
</select>

<input type="submit" value="obter informações" name= "vendeer"/>
</form>
<?php else: ?>


<form name="form" action="" method="post">
<p>
<b><font face="Berlin Sans FB" color="#FFFFFF">
Se deseja informaçoes sobre algum espetaculo:</font></b></p>

<select name="d1" style="width: 300px;" >
    <option value="1">galinhas</option>
    <option value="2">bodes</option>
</select>

<input type="submit" value="obter informações" name= "vendeer"/>
</form>

<form name="myform" action="index.php?pag=comprar" method="post">
<p>
<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;" >
    <option value="1">galinhas</option>
    <option value="2">bodes</option>
</select>

<input type="submit" onclick="return confirmation();" value="Comprar" name= "vender"  />
</form>

<SCRIPT LANGUAGE="Javascript" TYPE="text/javascript">
function confirmation()
{
    var answer = confirm("deseja mesmo comprar?")
    if(answer)
    {
        alert("compra efectuado com sucesso!");
        document.myform.submit();

    }
       
    else
    {
        window.location.href = "http://projecto.net84.net/site/index.php?pag=espetaculos";
        alert("compra nao efectuada");
               
       
    }

    return true;
}




</script>



<?php endif; ?>
</head>
<body>
</body>
</html>


#15 brunoais

brunoais

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3359 mensagens

Publicado 24 de Janeiro de 2011 - 10:01

Ver Mensagemflavio_jeronimo, em 24 de Janeiro de 2011 - 09:43, disse:

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 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)?

#16 flavio_jeronimo

flavio_jeronimo

    Boolean User

  • Membro
  • PipPipPip
  • 105 mensagens

Publicado 24 de Janeiro de 2011 - 10:23

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.

#17 mjamado

mjamado

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 2135 mensagens

Publicado 24 de Janeiro de 2011 - 10:25

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...

Ver Mensagembrunoais, em 24 de Janeiro de 2011 - 10:01, disse:

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.

#18 brunoais

brunoais

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3359 mensagens

Publicado 24 de Janeiro de 2011 - 10:34

Ver Mensagemmjamado, em 24 de Janeiro de 2011 - 10:25, disse:

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.
Fui enganado... É melhor corrigir aquilo, então.

#19 flavio_jeronimo

flavio_jeronimo

    Boolean User

  • Membro
  • PipPipPip
  • 105 mensagens

Publicado 24 de Janeiro de 2011 - 10:38

Ok ja mudei o <head> continua a funcionar no mozzila e mas no google crhome nao funciona.

#20 brunoais

brunoais

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3359 mensagens

Publicado 24 de Janeiro de 2011 - 10:44

Código sff.