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

flavio_jeronimo

[Resolvido]Problema com navegador Google Chrome

24 mensagens neste tópico

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

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