Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carlos F.

Abrir página externa a cada 1 click

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com Javascript puro, você teria que armazenar o valor dessa variável num cookie, e ai testar qndo é hora de abrir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal foi o nome da função... kkkkk!!! Nem tinha percebido que tinha deixado daquele jeito... aff! :o

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.