2016-08-05 6 views
0

ユーザがポップアップウィンドウ内の要素をクリックしたかどうかを確認できますか?私は現在、このJavaScriptを使用してポップアップを開き、閉じられているかどうかを検出します。ユーザがポップアップ内の要素をクリックしたかどうかを検出

var win = window.open(url,'','height=500,width=800'); 
var winTimer = window.setInterval(function() 
{ 
    if (win.closed == true) { 
     clearInterval(winTimer); 
    } 
}, 2000); 

たとえば、YouTubeをポップアップウィンドウで開き、ユーザーが「好き」ボタンをクリックしたかどうかを検出したいと考えています。私のインターバルの中で要素のクリックを検出したら、それを検出したらどうすればいいですか?

+2

可能性のある重複した[ポップアップウィンドウでユーザーのクリックイベントを検出することが可能ですか?](http://stackoverflow.com/questions/21018298/is-it-possible-to-detect-the-user -click-event-in-the-popup-window) –

答えて

1

ドメインがサイトと同じドメインでホストされている場合を除き、残念ながらcross-domain securityの問題が発生します。あなたが達成しようとしていること(youtubeを通して)は、これを可能にする暗黙のapiを持っていない限り、この場合はうまくいかないでしょう(Window.postMessage()を参照)。 wikipedia page for the Same-origin_policyから

:同一生成元ポリシーずにセキュリティ上のリスクが存在することになるので、

この制限を持っている主な理由です。ユーザーが銀行のWebサイトにアクセスしていて、ログアウトしていないとします。その後、彼は任意の他のサイトに行き、そのサイトにはバックグラウンドで実行されているいくつかの悪質なJavaScriptコードがあり、銀行サイトからデータを要求しています。ユーザーはまだバンキングサイトにログインしているので、その悪質なコードはバンキングサイト上の何かを行う可能性があります。たとえば、最後のトランザクションのリストを取得したり、新しいトランザクションを作成したりします。これは、ブラウザが銀行ウェブサイトのドメインに基づいて銀行のWebサイトにセッションCookieを送受信できるためです。その悪意のあるサイトにアクセスしたユーザーは、訪問しているサイトに銀行セッションCookieへのアクセス権がないと予想します。これは当てはまりますが、JavaScriptは銀行セッションクッキーに直接アクセスすることはできませんが、銀行サイトのセッションクッキーを使用して銀行サイトに依頼を送受信することは可能です。新しい取引の送信に関しては、銀行サイトによるCSRFの保護でさえ効果がありません。なぜなら、スクリプトはユーザーが行うのと同じように単純に行うことができるからです。これは、セッションを使用したり、ログインする必要があるすべてのサイトで懸念されます。例(または他のサイトのコース)の銀行サイトが公開データのみを表示し、何も起動できない場合は、通常同じ起源の方針が守る危険はない。また、2つのサイトが同じ当事者の支配下にあるか、お互いを完全に信頼している場合、おそらく危険はありません。

+0

ありがとうございました!よく私は正しいポップアップのiframe insteasdを使用することができると思いますか? –

+0

iframeも同じ発信元ポリシーを使用します。あなたは[ここ](http://stackoverflow.com/questions/13439303/detect-click-event-inside-iframe)を見ることができますが、2番目のコメントでわかるように、このiframeでも問題が発生する – FrankerZ

関連する問題