キーワード監視を設定し、DevToolsを開くとページのHTML内にその単語が実際に表示されているのに、アラートが一度も発生しないことがあります。何も壊れているわけではありません。標準的なキーワード検出は、ページの可視テキスト、つまり人間が画面上で実際に読める単語を読み取ります。監視している値が非表示要素、data-属性、またはインラインスクリプト内に存在する場合、それは実際のデータですが可視テキストではないため、通常の検出はそのまま通り過ぎてしまいます。
解決方法は1つのチェックボックスです。ExtfyによるAuto Refresh拡張機能のDetect KeywordタブでFind monitor text in sourceを有効にすると、キーワード検索はレンダリングされたテキストから完全なHTMLソースへ切り替わります — 非表示要素、属性、スクリプトも含まれます。
最新のページは、画面上に表示する情報よりもはるかに多くの情報をマークアップ内に保持しています。注目しているキーワードは、次のような場所に存在していることがよくあります:
display:none や visibility:hidden で囲まれたステータスメッセージ。スクリプトによって表示されるのを待っています。data-属性 — data-availability="in_stock" や data-status="approved" のような値。UIを制御しますが、テキストとして表示されることはありません。<script>ブロック内に含めて配信し、後でJavaScriptによって表示する状態オブジェクト。title、alt、aria-labelなどの属性 — マシンやスクリーンリーダーには読み取れますが、テキスト一致では認識されません。可視テキスト検出は、人間の直感に合わせて意図的に構築されています。ブラウザがすべてをレンダリングした後、人が見るようにページを読み取り、実際に画面上に表示される単語だけを対象にします。これにより高速性が保たれ、結果も整理されます — 一致するということは、人間にもその単語が見えるという意味です。この設計の代償は見落としが発生する点です。マークアップ内にのみ存在するものは定義上、可視テキストではないため、検出器はそれを確認することすらありません。ページ内に入力したキーワードとまったく同じ文字列が大量に存在していても、検出は正しく「見つからない」と報告します。これはレンダリングされた表示では実際に存在しないためです。
in_stockを入力します。商品ページが購入者には「在庫切れ」と表示している一方で、マークアップにはすでにdata-availability="in_stock"が含まれている状況を想像してください — データは更新されていますが、UIがまだ追いついていません。可視テキスト検出では古い「在庫切れ」ラベルとの一致を続けます。Find monitor text in sourceを有効にし、キーワードをin_stockに設定すると、Auto RefreshはHTMLに変更が反映された瞬間にその変化を検出します。多くの場合、表示ページが更新されるよりも少し早く検出できます。同じ方法は、非表示のエラーフラグ、管理ツール内の承認状態、JavaScriptによって遅れて表示されるあらゆる値にも使用できます。
in_stock or status-approved is far safer than stock.可視テキスト検出は、監視しているものが実際には表示されない場合を除けば、適切な初期設定です。キーワードが非表示要素、属性、またはスクリプト内に存在する場合は、Detect KeywordタブとAuto RefreshでFind monitor text in sourceを有効にすると、DevToolsと同じようにページを読み取り、通常の検出では静かに見逃されるデータを検出できます。