1

私はドキュメントを読み、これが予想されることを理解しています:

スクリプトは、最上位ページと、iframe などの HTML ソースを持つすべての子に挿入されます。ブラウザのタブごとにスクリプトのインスタンスが 1 つしかないと仮定しないでください。

しかし、私は疑問に思っています:

  1. iframe 以外に、"HTML ソース" (画像? オブジェクト?) を持つ要素は何ですか? 「HTML ソース」という用語は、私の耳には不快なほどあいまいです。
  2. スクリプトを実行している要素を検出する方法はありますか?

推奨どおり、それを判断して iframe を除外しましたwindow === window.topが、他の要素がまだスクリプトを実行しており、必要以上に実行しています。

ありがとう。

4

2 に答える 2

2

質問に十分な情報を提供しなかったため、自分の質問に答えているのは本当に自分のせいです。私の弁護では、当時、私が提供する情報が少なすぎることを知りませんでした.

とにかく、これを解決する道を進んでいる間、私は Apple の開発者フォーラムで質問をし、以下の重要な情報を含めました:

  • スクリプト内のすべてのbeforeloadイベントで発生しますdocument(または想定されていた)。

私が学んだことは、beforeloadイベントはドキュメント内のサブリソースに対してのみ発生するということでした。ドキュメント (またはウィンドウ) 自体ではありません。イベント ハンドラーを削除し、スクリプトが開始スクリプトとして適用されていることを確認しました (そうでした)。ウィンドウのテストをトップウィンドウとして既に適用していたので、カバーされました。これで、インジェクション スクリプトは 1 回だけ起動します。

于 2010-07-16T18:25:35.873 に答える
1

その他の HTML ソースは、フレームまたはオブジェクト タグ (HTML コンテンツを含む) の場合があります。それ以外にはあり得ないと思います。ただし、私の知る限りでは、それらも でフィルタリングする必要がありますwindow === window.topconsole.log変数をing してdocument.location、挿入されたスクリプトを実行する URL を確認してください。

于 2010-07-15T04:35:34.233 に答える