ブラウザーで AJAX がオフになっている場合でも、特定のページで html.ts ファイルが 2 回実行されるという問題が発生しています。すべてのマッピングをコメントアウトしてもこの動作を行うため、マッピングの問題ではないようです。このページは、Chrome ブラウザーで正常に表示されます。
2 に答える
AJAX などによってページに何も挿入されていない場合、これはおそらく html の形式が正しくないことが原因です。<head>
、<body>
または以外のソースに何かがある場合<html>
、Gokogiri は外側のマークアップを別の<html>
タグでラップします。すると、開始タグと終了<html>
タグが 2 つあるため、html.ts が 2 回実行されます。解決策は、Gokogiri に何をすべきかを伝える前に着信ページをキャッチし、すべてが<body>
タグでラップされていることを確認して、壊れた html を修正することです。
プロジェクト フォルダーの scripts/main.ts で、
match($content_type) {
with(/html/) {
</body>
これを追加すると、タグとタグが削除</html>
され、最後に追加されます。
# wrap markup that is outside the body so tritium doesn't get applied twice
replace(/\<\/body\>/,"")
replace(/\<\/html\>/,"")
append("</body> </html>")
これにより、Gokogiri に渡される開始タグと終了<html>
タグが 1 つだけ存在し、必要に応じて html.ts が 1 回だけ実行されるようになります。
Tritiumコードがページを操作しているときに、両方の<html>
タグから最初のタグに何かを移動し、Chromeがページを受け取ると、2番目の空の<html>
タグを消去するため、Chromeでソースがおそらく問題ないように見える理由.
<html>
そもそもタグが 2 つある可能性もあります。そして、それらは html.ts ファイルで選択されています。html.ts ファイルは selector で始まるため、$("/html") {
この場合で<html>
タグが 2 つある場合、コードは 2 回実行されます。
これを引き起こしている可能性のあるページの iframe を確認してください。