Como impedir que o Chrome atualize a página ao visualizar a fonte?


20

Ao visualizar a origem da página no Google Chrome, o navegador abre uma nova guia e basicamente cola o URL com o view-source:prefixo. Isso é indesejável.

Como desenvolvedor, posso incluir alguma saída de diagnóstico que só é visível na fonte após o envio de um formulário. Quando o Chrome atualiza a página para visualizar a fonte, essas informações desaparecem.

Existe alguma maneira de impedir esse comportamento?

Nota: eu estou familiarizado com a opção "Inspecionar elemento". Este não é apenas um substituto adequado para visualizar a origem da página bruta da página exata que você está visualizando.


Um script de teste rápido

<pre>
  <?= print_r($_POST, true) ?>
</pre>
<form action="" method="post">
  <input id="foo" name="foo" value="bar" />
  <input type="submit" />
</form>

Depois de clicar no botão enviar, a página mostra

Array
(
    [foo] => bar
)

Se você visualizar a origem da página, verá uma saída vazia $_POST

<pre>
Array
(
)
</pre>
<form action="" method="post"> 
  <input id="foo" name="foo" value="bar" /> 
  <input type="submit" /> 
</form> 

Atualizar

Aparentemente, esse bug já foi enviado. Suspiro...

Se alguém souber de uma boa solução, eu agradeceria muito.


As pessoas de lá não entendem que a fonte não é mantida na memória (devido ao minimalismo), mas manipulada. Você deve ver o comentário code.google.com/p/chromium/issues/detail?id=523#c47 como que parece uma boa idéia também ...
Tamara Wijsman

Respostas:


12

Na página do relatório de erros, a solução alternativa mencionada no comentário 12 funciona: Nas Ferramentas do desenvolvedor, ative o Rastreamento de recursos. (Se estiver desativado, a ativação reenviará a solicitação que gerou a página visível no momento, POST ou GET.) Na lista de Recursos, você pode clicar na página principal para ver o código-fonte conforme retornado cortando o para solicitações POST e GET.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Mais Informações

Fiz alguns testes usando um arquivo php simples que mostrava o método de solicitação usado e um valor POSTed, um log do servidor proxy para ver quais solicitações o Chrome estava fazendo e o chrome://net-internals/view-cache/prefixo para ver o que o Chrome estava armazenando em cache.

Quando você usa o comando Exibir fonte, o Chrome mostra a fonte de sua versão em cache da página e armazena em cache apenas as páginas solicitadas pelo método GET.

Se você estiver visualizando uma página que você solicitou anteriormente usando GET e POST, apenas a versão GET será armazenada em cache. O uso do comando View Source não solicita novamente a página, mas mostra a versão GET em cache, não a versão POST atualmente visível, se houver.

Se você estiver visualizando uma página que você solicitou apenas usando o método POST, o comando View Source fará com que o Chrome procure em seu cache, não encontre nada, solicite a página usando GET, armazene em cache e mostre a fonte por essa.


Boa descoberta!
Tamara Wijsman

11
O Chrome mudou muito desde essa resposta, mas é basicamente o mesmo: abra as ferramentas de desenvolvimento, garanta que o tráfego de rede seja registrado e encontre a solicitação registrada na guia Rede. No caso de solicitações redirecionadas, você pode marcar "Preservar log" ou "log anterior na navegação" para não apagar o log a cada nova solicitação de sincronização.
Jon z

11
@ Jonz, depois de perceber essa loucura, já não gosto do Google Chrome. Por exemplo, eu precisava verificar a origem da página da página de agradecimento do site de comércio eletrônico (página carregada depois que o usuário faz um pagamento bem-sucedido, para verificar o acionamento do código GTM). Agora, no carregamento da página, simplesmente desmarco a sessão necessária e, novamente, ao recarregar, se a sessão não for encontrada, redireciono o usuário para a página inicial. Portanto, se eu tentar usar o hack do Google Chrome, nunca consigo visualizar a fonte da página, porque ela só pode reenviar a solicitação GET e POST, mas não pode redefinir a sessão. Daí eu sugiro #use "Inspect Element"
Abhishek Madhani

11
@AbhishekMadhani Não tenho certeza se você pretendeu me responder, mas repetirei o que escrevi em um comentário abaixo - parece que, no Chrome Canary 37, uma nova solicitação de rede não é enviada quando você vê a fonte .
1

2

Boa pergunta - e um pouco decepcionante ao ler todos os comentários "isso está errado" ou "isso não vai funcionar". Esse comportamento torna o recurso "Exibir fonte da página" inútil para desenvolvimento em muitos casos.

Existe uma extensão chamada " Visualizador rápido de código-fonte ", que parece realmente mostrar a fonte da página atualmente carregada (ainda não a testei com solicitações POST).


0

Lamento dizer, mas isso é contra a natureza atual da navegação e depuração em um navegador ...

A fonte original não é mantida na memória, mas é analisada e transformada em uma árvore de análise o mais rápido possível, para impedir o uso inútil da memória. Portanto, todas as informações de depuração que você oculta na fonte são perdidas e devem ser explicitamente solicitadas. Nos chamados sites da Web 2.0, os elementos também mudam e é por isso que a inspeção é assim ...

Solução 1: Depurador da Web do Fiddler permite que você inspecione o tráfego HTTP;
isso permite que você veja as informações de depuração da sua última solicitação.

Solução 2: incorpore suas informações de depuração ou anexe-as no final,
ou talvez as mostre como pop-up ou de outra maneira impressionante que não perturbe seu layout.


13
TomWij, "isso é contra a natureza atual da navegação e depuração em um navegador ..." isso é simplesmente impreciso. As versões atuais do Firefox e Safari se comportam como "esperadas". De fato, como usei esses recursos em outros navegadores, passei a esperá-los no Chrome. Manter alguns KB de texto sem formatação na fonte original na memória não deve ser difícil.
macek

O Google Chrome é conhecido por seu minimalismo. ;-)
Tamara Wijsman

3
Isso é comprovadamente falso. No Chrome, você pode salvar a fonte original da página (Salvar página como) sem fazer uma segunda solicitação. Isto é o que deve ser exibido quando eu "Ver fonte". A implementação atual é altamente indesejável. Por exemplo, ao visualizar o resultado de um POST. A fonte de exibição atualmente faz um GET no mesmo local, mostrando uma página totalmente diferente. A fonte de exibição deve sempre mostrar o estado da página na solicitação atual , NÃO em uma solicitação futura.
21413 Chris

6
Sem dúvida, e é aí que o View Source também deve ler. Uma nova solicitação é simplesmente enganosa e errada.
Chris

2
@ Jonz Você está argumentando para remover completamente a função View Source? Eu apoiaria isso se a única alternativa é a implementação atual quebrada. Mas por que não podemos ter os dois? Clicar nos logs de rede na barra de ferramentas dev é uma ótima opção quando você precisa desse nível de informação, mas se você quiser apenas ver a fonte da página atual, isso parecerá um exagero.
Chris
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.