• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

flavio_jeronimo

[Resolvido]Problema com navegador Google Chrome

24 posts in this topic

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

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

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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

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;
}

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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?

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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:

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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:

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

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

o codigo é o seguinte:

<head>
</head>
<?php
$host="mysql3.000webhost.com"; // Nome do Host 
$username="username"; // Mysql username
$password="password"; // Mysql password
$db_name="basedados"; // nome da Database 
$tbl_name="cinema"; // nome da tabela

// Conecta ao server e seleciona a database.

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
?>


<?php 

if($_REQUEST['vendeer']){
    $op = $_POST['d1'];
   $res = mysql_query ("SELECT * FROM cinema where id='$op'");
   
        if( mysql_num_rows($res) > 0 ){
          $data = mysql_fetch_array($res);

echo $error= "Opção </font>".$op.": Nome do Espetaculo: ".$data['nomedoespetaculo']. " / Dispomos de: ".$data['lugaresdips'].", lugares / Realiza-se em: ".$data['datadoespetaculo']. 
   " / Local do espetaculo: ".$data['saladeespetaculo']. " / Morada: ".$data['Morada']. " / Localidade: ".$data['local']. " / Localidade: ".$data['local']. " / Genero: ".$data['Genero'];
}
}
?>
<html>
<body>
<?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; ?>


</body>
</html>


EDIT: removidas informações de login. Tal com também não deixam as vossas chaves de casa à disposição de qualquer um para fazer uma cópia, também devem ter em atenção de não deixar os dados de login para todo o mundo! (softclean)

0

Share this post


Link to post
Share on other sites

Oh, flavio_jeronimo, então?  :)

Passa lá a tag html para cima, mete pelo menos a title no head, e tira rapidamente o login e a password da base de dados daí!

Mas, pronto, o problema nem sequer era disso... A tag form não tem a propriedade name - tem, isso, sim, uma propriedade id. Como deste conta, alguns browsers são tolerantes, e deixam-te chamar o form pelo name, mas outros não, e tens mesmo que usar o id.

<form id="myform" action="index.php?pag=comprar" method="post">

0

Share this post


Link to post
Share on other sites

Obrigado pela ajuda, problema solucionado, e obrigado também pelo aviso pois tinha fornecido os dados correctos porque saí a pressa e nem me lembrei.

obrigado e cumps

0

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