2016-03-27 10 views
0

をイベントリスナーを接続します。例えばCOM私は</p> <p>親ドメインの下に述べたように、私はシナリオを持っているいくつかのプロジェクトに取り組んでいた現在のドメインから別のドメインに

私の親ドメインは、私は子ドメインをロードしています。このボタンをクリックするだけでキャプチャという名前のボタンを持っている私の親ドメインのwww.exampledomain.comですこれはURLを持っていますwww.someotherdomain.com新しいタブでは、JavaScriptを使用して

新しいタブで子ドメインのURLを読み込むのと同時に、親ドメインから子ドメインにイベントリスナーをアタッチしようとしています。

親ドメインの子ドメインで実行されたすべてのクリックアクションを取得しようとしています。

私はCORSの承知していますが、私はこの使用してJavaScriptの

を達成したいと思いますが、それは可能ですか?アドバンス

+0

これはchrome extensionまたはfirefoxプラグインとして行うことができますが、理想的ではありませんが、言及する価値があります – DelightedD0D

答えて

3

内の任意のポインタ高く評価

おかげで、ブラウザは、(セキュリティ上の理由のために)どのような方法で他のドメインからページを含んでいます直接アクセスのブラウザウィンドウをさせません。したがって、ドメインのページにイベントリスナーを直接追加することはできません。

あなたが許可されているのは、2つのページを協力させることです(理論的には、一緒に協力し合っていれば、セキュリティ上の問題はないはずです)。しかし、協力しているケースでも、ドメインAを持つページをドメインBのページに追加することはできません。あなたはそれを行うことはできません。

window.postMessage()を使用すると、ある種のコマンドを別のウィンドウに送信し、別のウィンドウにDOMアクション自体を実行させることができます。あなたはwindow.postMessage()を送信して、別のウィンドウからいくつかの情報を要求してから、別のウィンドウに特定の要求のリスナーがあり、その情報を取得してデータを戻します。この構造には明らかに2つの完全に協力し合うページが必要です。セキュリティ上の理由から、メッセージを受け入れるドメインを制限することができます。詳細は、MDN doc for window.postMessage()を参照してください。ご質問のよう

:私は親ドメインに子 ドメインで実行されたすべてのクリックアクションのキャプチャを見つけようとしています

これは親ドメインからは実行できません。親ドメインから子ドメインにメッセージを送信して、要求されたクリックハンドラを子ドメインに設定するよう依頼し、クリックが発生するたびにデータをwindow.postMessage()に送信することができます。大部分の作業は、独自のコードを使用して子ウィンドウ内で実行する必要があります。

+0

私は開いている子ドメインのコントロールを持っていません。これで何かを達成することはできませんか? –

+0

@Santhosh_Reddy - Nope。ブラウザは、クライアントサイドのJavascriptが他のドメインのページにアクセスすることを特に禁止しています。これがセキュリティモデルです。そのコンテンツにアクセスしたい場合は、それを取得するためのサーバーが必要です。 – jfriend00

+1

@Santhosh_Reddy - または、ユーザーが特別にインストールしたブラウザプラグインを使用できます。 – jfriend00

関連する問題