Bloco "document.location" Javascript redireciona em uma página

2

Eu tenho um site onde eu quero impedir que a página seja recarregada usando um document.location em uma tag de script. Como posso fazer isso no Firefox?

    
por zacharyliu 03.11.2009 / 05:32

4 respostas

2

Na verdade, o Greasemonkey não bloqueará se o código HTML contiver um bloco javascript embutido com um redirecionamento assim:

<script type="text/javascript">
var url = "http://google.com";
document.location.replace(url);
</script>

O Greasemonkey, no entanto, pode ser usado para bloquear chamadas para funções específicas - basta sobrescrevê-las :). Se o acima foi envolvido em uma chamada de função da seguinte forma:

<script type="text/javascript">
function redirect_to(url)
{
  document.location.replace(url);
}
</script>

Então você poderia apenas redefinir a função no Greasemonkey:

function redirect_to(url){ return true }

Bloquear redirecionamentos in-line via Firefox

Essencialmente, o Firefox torna possível bloquear qualquer manipulação de DOM como location.href.replace de um site específico através do chamado: Políticas de segurança configuráveis (CAPS)

Uma palavra de aviso: observe que suas configurações de segurança bloquearão TODAS as chamadas desse domínio para location.href.replace . Se qualquer aplicativo fizer uso dessa chamada, não há como permitir algumas chamadas e bloquear outras.

Configurando o CAPS para bloquear location.href.replace

Você não precisa do Greasemonkey para esta tarefa. O Firefox vem com um recurso interno para permitir / não acesso a propriedades / métodos de objetos DOM por site. Ele é chamado de Políticas de Segurança Configuráveis (CAPS) e está descrito em 1 .

Um breve guia, assumindo o caso mais simples:

  1. Fechar o Firefox
  2. Localize sua pasta de perfil
  3. Localize o arquivo user.js nessa pasta. Se não existir, crie-o com um editor texto (Notepad, vim, etc.)
  4. Adicione as seguintes linhas ao user.js:

    user_pref ("capability.policy.policynames", "noframebuster"); user_pref ("capability.policy.noframebuster.sites", " link "); user_pref ("capability.policy.noframebuster.Location.replace", "noAccess");

É claro que você terá que substituir o domínio pelo que você deseja impedir de redirecionar seus frames.

Encontre uma explicação mais detalhada no meu blog (justaddwater.dk): Firefox Tip Para o JavaScript do Framebuster .

    
por 06.05.2010 / 12:47
1

O add-on GreaseMonkey para o Firefox foi projetado para fazer exatamente isso.

    
por 03.11.2009 / 07:25
1

Se você se sentir confortável usando um recurso debugging presente no Firefox, o watch funciona para mim:

document.watch('location', function() {
    return '#';
});

Não tenho certeza sobre a aplicabilidade dos avisos sobre desempenho, etc. em MDN , talvez alguém tenha algum insight sobre isso nessa situação.

    
por 29.10.2015 / 01:52
0

Experimente a extensão YesScript .

O YesScript permite criar uma lista negra de sites que não podem executar JavaScript.

    
por 21.01.2013 / 03:53