Pergunta

Eu tenho um aplicativo asp.net que é executado exclusivamente em IE7 (web site interno).

Quando um usuário precisa inserir dados, eu aparecer uma janela filho com um formulário. Quando o fechamento do formulário, ele chama javascript:. Window.opener.location.reload (true) para que os novos dados serão exibidos na página principal

O problema é que o navegador se queixa de que ele deve repassar a página. Existe alguma maneira de desativar esse recurso?

Foi útil?

Solução

É porque a página em window.opener vem de uma solicitação POST Talvez você possa usar javascript: window.opener.location = window.opener.location; para fazer apenas um pedido GET se os dados podem ser obtida sem um POST.

Outras dicas

Não, mas há uma solução. Seu design geralmente considerado bom para usar um redirecionamento 302 imediatamente após alguém postar dados para uma página. Isto impede que pop-up ocorram sempre. Permita-me dar mais detalhes.

1) Os preenchimentos de utilizador numa forma e envia dados por correio.

2) O backend recebe os dados e age sobre ela.

3) Em vez de retornar o conteúdo para o usuário, as questões de back-end um redirecionamento 302, logo que o seu feito o processamento da página (possivelmente redirecionando parte de trás usuário exatamente o mesmo url, em caso de necessidade)

4) A página que o usuário verá é a página que você disse seu navegador para redirecionar para. Eles vão carregar o página redirecionada com um pedido GET padrão. Se eles tentarem atualizar a página, ele não vai repassar os dados. Problema resolvido.

Este é um problema com a maneira usual "postback" do ASP.NET. Se você precisa recarregar a página sem este aviso, esta página deve vir de um GET, não um POST. Você poderia fazer um Response.Redirect ( "...")-se. Mas isso vai destruir o uso de viewstate.

asp.net mvc corrige esse problema, não um único problema IE7, mas uma característica da maioria dos navegadores de segurança. Nenhum reparo que eu saiba, exceto você poderia apenas atualizar o conteúdo no formulário principal com js em vez de recarregar a página inteira

Eu não acredito que há uma maneira de fazer isso. Em vez disso, por que não dirigir a janela pai para uma página sem uma recarga.

javascript: window.opener.location = 'seu url'

AFAIK, não via seus scripts.

Você pode tentar:

window.opener.location = '#';

Deve contornar a repostagem browser. E, você pode ajustar o nome do hash conforme necessário.

Se você mudar de Página1 para page2, e deseja desativar o navegador de volta à página 1 indo, em seguida, adicione o seguinte no topo da página 1.

<script>
if(window.history.forward(1) != null)
                 window.history.forward(1);
</script>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top