Ir para conteúdo

POWERED BY:

Arquivado

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

Renanbg

em Site HTML

Recommended Posts

Então acabei de montar um site em HTML

 

No index.html usei um iframe e faço todos os links carregarem dentro deste iframe

 

Ao colocar o site no ar e visitar diversos links percebi que no historico ficavam todos gravados

 

entao se o nome do site fosse

 

www.teste.com.br

 

no historico ficou

 

www.teste.com.br

www.teste.com.br/ajuda.html

www.teste.com.br/algo.html

www.teste.com.br/seila.html

 

E se a pessoa acessar um dos ultimos 3 acima esse sera carregado fora do iframe

 

como contornar isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca no code das páginas que não devem ser acessadas diretamente:

 

JAVASCRIPT
<script>

        function confereURL() {

                var url = new String(location.href);

                if (url != "index.html") {

                        location.href="index.html";

                }

        }

</script>

 

[url="http-~~-//december.com/html/4/element/body.html"]<body[/url] onload="confereURL();">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Corrigindo, da forma como está não funcionaria, tem que ser como abaixo:

 

JAVASCRIPT
<script>

        function confereURL() {

                var url = parent.location.href;

                var index = "http://localhost/testesjs/indexIframe.html"; // endereço absoluto da index.html

                if (url != index) {

                location.href="indexIframe.html";

                }

        }

</script>

 

[url="http-~~-//december.com/html/4/element/body.html"]<body[/url] onload="confereURL();">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funciona bem, só que se o cara estiver navegando dentro do proprio site e ele acessar essa pagina em questão ele será redirecionado ao index...

 

como todo site carrega dentro de um iframe acho que n tem solução...

 

Queria q n gravasse no historico as paginas que ele navega...mas acho q isso é default do navegador

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funciona bem, só que se o cara estiver navegando dentro do proprio site e ele acessar essa pagina em questão ele será redirecionado ao index...

Uma alternativa seria este pedaço de código:

JAVASCRIPT
window.onload = function()

{

        if( window.parent.location.href == window.location.href)

        history.go(-1);

}

 

O que ele faz, verifica se o usuário esta dentro de iframe (frame) caso positivo volta no histórico para a página anterior (ao invés do index).

Queria q n gravasse no historico as paginas que ele navega...mas acho q isso é default do navegador

Você esta certo, não é possível alterar este comportamento do navegador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara

 

Gostei da sua ideia, queria ver se tem como incrementar mais...

 

Por exemplo...

 

Vou ter q colocar esse codigo em cada pagina certo?

 

Então teria como fazer assim:

 

se o cara vai acessar o contato.html, fazer carregar esse contato.html dentro do iframe ao inves de voltar para a pagina anterior?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renanbg, você é exigente heim? hehehe.

 

Bem, acompanhe a logica que montei:

 

Na página index.html insira o seguinte código entre as linhas head dá página:

 

JAVASCRIPT
String.prototype.QueryString=function(k)

// Key, Query String

{

   q = this;

   q=q||location.href;  // uses current uri if no query is supplied

   var tmpNdx=q.indexOf('?');

   if (tmpNdx!=-1) // If string has query information

   {

      q=q.slice(tmpNdx+1); // Remove all information except for query

      q=q.split('&');      // Create array of key/value pairs

      for (var i=0;i<q.length;i++)

      {

         var p=q[i].indexOf('=');

         if (p>0)

         {

            var thisk=q[i].substring(0,p);

            if (thisk==k) return q[i].substring(p+1); // return value

         }

      }

      return null; // If key doesn't exist, return null

   } else {

      return null; // If no query information, return null

   }

}//Fonte:http://blog.visionalechoes.com/2007/07/07/javascript/query-string-value-getter/

 

window.onload = function()

{

        var a;

        if( (a = window.location.href.QueryString('iframe')) )

        {

                window.frames['nomeIframe'].href = a;

                //A linha acima é importante, informe O NOME DO IFRAME.

        }

}

 

O que ele vai fazer:

Vai verificar se existe uma querystring chamada iframe, caso exista irá redirecionar o iframe *que você deve nomear no onload* com o seu valor.

 

 

E nas páginas insira:

JAVASCRIPT
window.onload = function()

{

        var a;

        if( window.parent.location.href == (a = window.location.href))

        window.location.href = 'http://seusite.com.br/index.html?iframe='+a;

}

O que ele vai fazer:

Verifica se o usuário abriu a página dentro de um iframe(frame), caso positivo, irá redirecionar o usuário para a página http://seusite.com.br/index.html com a querystring iframe com o valor da url atual.

 

*Obs.: Você pretende usar alguma linguagem serve side?

Compartilhar este post


Link para o post
Compartilhar em outros sites

caracas, vou tentar fazer aqui...

 

sabe sou meio que iniciante..aprendi na marra e com a ajuda de pessoas assim como você...

 

Hj to quase saindo, então amanha com tempo vou tentar fazer

 

linguagem serve side?

 

Não conheço....

 

Obrigado pela força, amanha acho que consigo testar e posto o resultado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

linguagem 'serve-side' = asp, php, asp.net, ruby, perl, etc...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, tentei aqui e não rolou...

 

Fiz dois testes...

 

1- abri a pagina fora do Iframe

o resultado foi que ele abriu novamente o index com a pagina principal

 

2- abri a pagina pelo iframe

resultado foi que carregou todo o index dentro do iframe

 

complicado isso neh? hehhehee

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funciona como no meu, mas se eu tentar acessar um link interno n dá...

 

n teria como usar essa dica aqui em cada pagina

 

window.onload = function()
{
		if( window.parent.location.href == window.location.href)
		history.go(-1);
}

e ao ives de usar o

history.go(-1);
fazer carregar a pagina dentro do iframe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

fazer carregar a pagina dentro do iframe?

Se você notar, caso a página top2 seja aberta, você será redirecionado para a página index.html, porém o frame top será configurado para esta página. se não for isso que você quer, desisto! hehehe.

 

 

*Faz um teste, altere a página down.html, crie um clone 'down2.html' altere o texto e abra-a.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim

 

<script>

window.onload = function()
{
		if( window.parent.location.href == window.location.href)
		window.location.href = 'http://www.meusite.com.br';
}

</script>

Se eu colocar esse codigo em todas as paginas exceto o index (que possui o iframe) o cara ao tentar acessar fora do iframe vai ser redirecionado para o index

 

Dae pensai mais um pouco q fiz assim

 

<script>

window.onload = function()
{
		if( window.parent.location.href == window.location.href)
		window.location.href = 'http://www.meusite.com.br/contato.html';
}

</script>

então mudando apenas o final o cara sempre será redirecionado para o lugar correto se acessar fora do Iframe

 

Ou seja se tenho paginas como:

 

contato.html

produtos.html

visitas.html

 

em cada uma delas coloco o mesmo codigo, porem alterando a linha

 

'http://www.meusite.com.br/contato.html';

e adicionando o nome da página

 

 

você acha que pode ser assim?

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.