Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi pessoal,
Estou tentando fazer um sistema para abrir uma página externa a cada 1 click.
O sistema deverá acontecer sempre com o usuário a cada 1 clique.
Ex:
Usuário 1º clique - Abre o Real (na mesma página)
Usuário 2º clique - Abre o link: http://www.google.com.br(em nova página)
Usuário 3º clique - Abre o Real (na mesma página)
Usuário 4º clique - Abre o link: http://www.google.com.br(em nova página)
e assim por diante...
Alguem tem noção de como fazer?
Abraço.
Mas pra isso eu ia ter que setar cada link separadamente não??
Como assim? Não entendi seu último post...
Mostre-nos o que já fez.
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
A lógica, é para ser algo do tipo:
<head>
<script type="text/javascript">
var vezes = 0;//lembrando que se houver o refresh da página, as variáveis js serão zeradas
function abrirLink( link, event )
{
event.preventDefault();
if( vezes%2==0 ) //se for par
window.location = this.href;
else
window.open( link );
vezes++;
}
</script>
</head>
<body>
<a href="pagina.html" onclick="abrirLink('http://www.google.com.br', event)">Link</a>
</body> mas tem falhas, se o primeiro clique abrir o link original na própria página, vai ocorrer um refresh, e as variáveis JS serão perdidas.Eis o problema, eu quero exatamente isso, o primeiro click vai abrir o link original na mesma página. Como será que eu poderia fazer isso? ou seria impossível?
Vlw.
Com Javascript puro, você teria que armazenar o valor dessa variável num cookie, e ai testar qndo é hora de abrir.
Qual linguagem seria mais facil então eu fazer este processo?
Ps. Muito obrigado pela atenção William.
Suponhamos uma situação:
O cara clicou e abriu a página externa (nova página). Depois se ele clicar novamente, você quer realmente carregar a página Real, ou não haveria essa necessidade, já que a página Real já encontra-se aberta?
Se for para recarregar a página Real, o bom seria utilizar variáveis de sessão, em ASP ou PHP. Mas se não for recarregar, é possível fazer em Javascript.
Exato, ele clica no link abre a página externa em uma nova página, se ele clicar denovo no mesmo link vai para a página certa.
Olha só... eu vou responder a sua dúvida, mas tenho algumas considerações a fazer:
Saiba que usuários odeiam esse tipo de coisa!!! Você irá perder todos os usuários do seu site fazendo isso. Sei que sua intenção deve ser abrir algum site publicitário, ou sites/blogs seus ou de outros amigos. Cara, links falsos são insuportáveis pois usuários odeiam ser enganados!
Deixei de freqüentar um site de downloads pois ele abria um pop-up toda vez que eu clicava em um campo de texto para digitar o código de verificação. Nunca mais voltei lá e passarei um bom tempo sem retornar!!!
Sei que não faz parte de sua dúvida, mas é meu ponto de vista sobre isso e também sei que muitos leitores poderão ler esse tópico no futuro.
De qualquer maneira, aí vai o código:
<html>
<head>
<title>Link Falso</title>
</head>
<body>
<script type="text/javascript">
var linkVerdadeiro = false;
function link_doido(falso,verdadeiro){
if (linkVerdadeiro == false) {
window.open(falso,"Pagina");
linkVerdadeiro = true;
} else {
window.location.href = verdadeiro;
}
}
</script>
<a href="javascript:link_doido('http://www.google.com.br','http://www.forum.imasters.com.br')">www.forum.imasters.com.br</a>
</body>
</html>Também não suporto esse tipo de coisa, mas esse site não é meu, eu também alertei a pessoa sobre esse tipo de coisa mas ela não quis saber e queria um sistema desse tipo.
Mesmo assim é sempre bom ter pessoas assim como você que tem a consciência de alertar usuarios sobre o que é lega ou não fazer.
Muito obrigado esse código funciona mesmo, mas teria alguma forma de não precisar setar o href em todos os links??
Muito Obrigado.
<html>
<head>
<title>Link Falso</title>
</head>
<body>
<script type="text/javascript">
var linkVerdadeiro = false;
function link_doido(lnk){
if (linkVerdadeiro == false) {
window.open("[http://www.google.com.br","Pagina"](http://www.google.com.br));
linkVerdadeiro = true;
} else {
window.location.href = lnk;
}
}
</script>
<a href="javascript:link_doido('http://www.forum.imasters.com.br')">www.forum.imasters.com.br</a>
</body>
</html>
Você queria algo mais ou menos assim?
Acho que me expressei mal...
Eu queria saber se tem alguma forma de colocar essa função para todos os links sem que eu precise setar o href um por um.
Desse modo abaixo eu precisarei chegar em cada link e setar o href="javascript:link_doido('http://www.forum.imasters.com.br')".
<a href="javascript:link_doido('http://www.forum.imasters.com.br')">www.forum.imasters.com.br</a>
Abraço
Tente algo assim:
window.onload = function(){
var a = document.getElementsByTagName('a');
for(var i = 0; i < a.length; i++){
a[i].href = link_doido('http://www.forum.imasters.com.br');
}
};
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gifAgora eu me perdi.. não era o inverso ?
>
Usuário 1º clique - Abre o Real (na mesma página)
Aqui embaixo, você descreve a lógica inversa:
>
Exato, ele clica no link abre a página externa em uma nova página, se ele clicar denovo no mesmo link vai para a página certa.
-> No primeiro click: Abre a externa? ou a correta?
Se for a externa, não precisa de COOKIES, e a minha função já lhe faz isso, sem precisar adicionar o *link_doido* em cada um dos <a>
<html>
<head>
<script type="text/javascript">
var vezes = 0;//lembrando que se houver o refresh da página, as variáveis js serão zeradas
function abrirLink( link, event, el )
{
event.preventDefault();
if( vezes%2==0 ) //se for par
window.open( link );//no primeiro click, abre a página externa
else
window.location = el.href;
vezes++;
}
</script>
</head>
<body>
<a href="pagina.html" onclick="abrirLink('http://www.google.com.br', event, this)">Link</a>
</body>
</html> agora se 'a página externa for a mesma para todos os links', você não precisa passar por parâmetro:
function abrirLink( event, el )
{
event.preventDefault();
if( vezes%2==0 ) //se for par
window.open( 'http://www.google.com.br' );//no primeiro click, abre a página externa
..
<a href="pagina.html" onclick="abrirLink( event, this )">Link</a> agora se você quiser aplicar em todas as tags <a> da página:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml"](http://www.w3.org/1999/xhtml) xml:lang="pt-br" lang="pt-br">
<head>
<script type="text/javascript">
var vezes = 0;//lembrando que se houver o refresh da página, as variáveis js serão zeradas
window.onload = function()
{
var a = document.getElementsByTagName('a');
for( var i=0; i<a.length; i++ )
{
a[i].onclick = function( event )
{
event.preventDefault();//não funcionou no IE6
abrirLink( this );
}
}
}
function abrirLink( el )
{
if( el.rel%2==0 ) //se for par
window.open( 'http://www.google.com.br' );//no primeiro click, abre a página externa
else
window.location = el.href;
el.rel = parseInt( el.rel )+1;
}
</script>
</head>
<body>
<a href="pagina.html" rel="0">Link 0</a>
<a href="pagina1.html">Link 1</a>
<a href="pagina2.html">Link 2</a>
<a href="pagina3.html">Link 3</a>
<a href="pagina4.html">Link 4</a>
</body>
</html> mas não funcionou o **preventDefault** no IE6.Legal foi o nome da função... kkkkk!!! Nem tinha percebido que tinha deixado daquele jeito... aff! :o
Desculpas por ter me expressado mal novamente, o primeiro click é para a página correta e o segundo para a página externa que vai ser igual para todos os links.
E era isso que eu queria de aplicar a todas as tags <a>.
Okay! então você terá que fazer com COOKIES mesmo aquela verificação se foi 'o primeiro' ou o segundo clique.
Acredito que com os códigos já postados, você já deva ter uma boa base de como resolver. Tente desenvolver, e poste as dúvidas.
Tente assim:
http://forum.imasters.com.br/public/style_emoticons/default/seta.gif crie uma variável e armazene um valor nela. Quando clicar, você verifica se o valor for x e abre a página "Real", se for y abre a do Google.
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif