Algum tempo atrás, eu precisava obter a fonte da página através do JavaScript. Esta operação é muito simples. Você pode obtê -lo usando o document.Referrer. No entanto, ainda existem muitas situações inesperadas nas aplicações reais, então vamos resolvê -lo brevemente aqui.
O primeiro problema que encontrei é que, depois de ir da página HTTPS para a página HTTP, o valor do documento.Referrer está vazio. Por razões de segurança, algumas páginas importantes de muitos sites (como a página de login do Taobao) usam o protocolo HTTPS. Se um usuário que não estiver logado clique no link para a página B (página http) na página A (página http), mas a página B exige que o usuário faça login, ele pula para a página de login (HTTPS) e depois não pode ser o que não pode ser necessário para o que não pode ser necessário. Referencial, se houver uma página HTTP e uma página HTTPS no caminho, o caminho será quebrado de HTTPS para HTTP.
A raiz desse problema é a política de segurança do navegador, e parece não haver uma solução particularmente boa para confiar apenas no JavaScript. Uma idéia da rotatória é usar o Windows.name, escreva o URL da página atual no Window.name na página HTTPS e, em seguida, leia -o na próxima página (página http).
Além dessa situação, o documento. Eu procurei e descobri que alguém compilou uma lista aqui, mas não é muito completa, como o caso do IE6 que não está incluído. Então eu mesmo fiz isso, instalei n navegadores na máquina virtual e testei todas as situações (era realmente um trabalho físico), e os resultados foram mostrados na tabela abaixo:
| operar | Ie6 | Ie7 | Ie8 | Ie9 | Firefox | Cromo | Ópera | Safári |
|---|---|---|---|---|---|---|---|---|
| Digite o URL diretamente na barra de endereço | "" | "" | "" | "" | "" | "" | "" | "" |
| Acesse o URL da Bookmark | "" | "" | "" | "" | "" | "" | "" | "" |
| Clique no hiperlink da página A e pule para a página B (Target = "_ Self") | √ | √ | √ | √ | √ | √ | √ | √ |
| Clique no hiperlink da página A e pule para a página B (Target = ”_ Blank”) | √ | √ | √ | √ | √ | √ | √ | √ |
| Clique com o botão direito do mouse no hiperlink da página A e da página aberta B em uma nova guia | - | √ | √ | √ | √ | √ | √ | "" |
| Clique com o botão direito do mouse no hiperlink da página A e da página B em uma nova janela | √ | √ | √ | √ | √ | √ | √ | "" |
| Arraste o link para a barra de endereço | "" | Incapaz de arrastar | Incapaz de arrastar | "" | "" | "" | "" | "" |
| Arraste o link para a barra de guia | - | "" | "" | "" | "" | "" | "" | "" |
| Use os botões de frente e para trás do navegador | √ | √ | √ | √ | √ | √ | √ | √ |
| Js modificar localização.href | "" | "" | "" | √ | √ | √ | √ | √ |
| JS usa Window.open | "" | "" | "" | "" | √ | √ | √ | √ |
| Redirecionamento do servidor (302 salto) | Direcionando a página anterior | Direcionando a página anterior | Direcionando a página anterior | Direcionando a página anterior | Direcionando a página anterior | Direcionando a página anterior | Direcionando a página anterior | Direcionando a página anterior |
| Página meta refresh | "" | "" | "" | "" | "" | Página de virada | Página de virada | Página de virada |
O "√" na tabela acima significa que o referenciador pode ser recuperado normalmente "," significa que o referenciador está vazio.
Exceto pelo IE, outros navegadores são as versões mais recentes que podem ser baixadas no site oficial. Entre eles, o Safari testou a versão do Windows e a versão Mac, e a conclusão é a mesma.
Há também alguns casos em que nenhum teste foi feito, como se o referenciador pode ser mantido em cada navegador ao clicar em flash para pular.
A maioria das situações da tabela acima está alinhada com as expectativas, mas parece haver várias coisas para prestar atenção:
1. Em Safari, clicando com o botão direito do mouse para abrir o link fará com que o referenciador seja perdido;
2. No IE, modificando o local.href ou usando janela.open para abrir a página perderá o referencial (há uma exceção no IE 9, usando o local.href para saltar não perderá o referencial);
3. Ao usar o Meta Jump, o referente será perdido no IE/Firefox.
Finalmente, uma conclusão simples é: se você precisar acessar a fonte através do documento.