web-dev-qa-db-ja.com

ソースを表示するときにChromeがページを更新しないようにする方法は?

Google Chromeでページソースを表示すると、ブラウザは新しいタブを開き、基本的にview-source:プレフィックスを付けてURLを貼り付けます。これは望ましくありません。

開発者として、フォームの送信後にソースでのみ表示される診断出力を含める場合があります。 Chrome=ソースを表示するためにページを更新すると、この情報が非表示になります。

とにかくこの動作を防ぐ方法はありますか?

注:「要素の検査」オプションに精通しています。これは、見ている正確なページの生のページソースを表示するための適切な代用ではありません。


簡単なテストスクリプト

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

送信ボタンをクリックすると、ページに

Array
(
    [foo] => bar
)

ページのソースを表示すると、empty$_POST出力が表示されます

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

更新

どうやらこれ バグ はすでに提出されています。はぁ...

誰かが良い回避策を知っているなら、私はそれを大いに感謝します。

20
macek

バグレポートページから コメント12に記載されている回避策 が機能する:開発者ツールで、リソース追跡を有効にします。 (オフになっている場合は、有効にすると、現在表示されているページを生成したリクエストが再送信されます。POSTまたはGETのいずれか)。リソースのリストで、メインページをクリックして、 POSTとGET要求の両方でサーバーから返されたソースコード。

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

詳しくは

使用したリクエストメソッドとPOSTされた値、プロキシサーバーログを示す簡単なphpファイルを使用していくつかのテストを実行し、Chromeが作成していたリクエストとchrome://net-internals/view-cache/プレフィックスを使用して、Chromeがキャッシュしていたものを確認します。

[ソースの表示]コマンドを使用すると、Chromeはページのキャッシュバージョンのソースを表示し、それのみGETメソッドでリクエストされたページをキャッシュします。

GETおよびPOSTを使用して以前にリクエストしたページを表示している場合は、GETバージョンのみがキャッシュされます。 [ソースの表示]コマンドを使用しても、ページは再要求されませんが、現在表示されているPOSTバージョン(存在する場合)ではなく)キャッシュされたGETバージョンが表示されます。

POSTメソッドを使用してリクエストしただけのページを表示している場合、[ソースの表示]コマンドを使用するとChromeキャッシュし、何も検出せず、GETを使用してページを要求し、キャッシュして、そのソースを表示します。

12
Bavi_H

良い質問です。そして、「これは間違っている」または「これは機能しません」というコメントをすべて読んで、少しがっかりします。この動作により、 "ページソースの表示"機能は、多くの場合、開発に役立たなくなります。

現在ロードされているページのソースを実際に表示しているように見える " Quick source viewer "という拡張機能があります(POSTリクエストでテストしていません) 。

2
basic6

申し訳ありませんが、これはブラウザでのブラウジングとデバッグの現在の性質に反しています...

元のソースはメモリに保持されませんが、可能な限り高速に解析および解析ツリーに変換されます。これにより、メモリの無駄な使用を防ぎます。したがって、ソースで非表示にしたデバッグ情報はすべて失われるため、明示的に要求する必要があります。いわゆるWeb 2.0サイトでは、要素も変化し、それが検査がそのような理由である...

ソリューション1:Fiddler Web Debugger を使用すると、HTTPトラフィックを検査できます。
これにより、最後のリクエストからのデバッグ情報を確認できます。

ソリューション2:デバッグ情報を埋め込むか、最後に追加します。
またはそれをポップアップとして、またはレイアウトを妨げない別の素晴らしい方法で表示することができます。

0
Tamara Wijsman