4

JQuery を使用して iframe のクリックをキャッチする方法。Amazon バナーがあり、ユーザーが iframe をクリックしたときにコンテナー DIV を閉じる必要があります。「コンテンツ」、iframeのonclick、イベントのバインドを試しましたが、何も機能しません。iframe をクリックすると、別のタブで Amazon のページが開きますが、クリック イベントは発生しません。念のため、ブレークポイントとアラートを設定しました。

私は最新の JQuery バージョン 1.9 を使用しており、Chrome でテストしています。グローバルクリック($(document).click)をキャプチャしてクリックの領域を確認することも考えましたが、iframeをクリックすると$(document).clickが起動しません。助言がありますか?

繰り返しますが、これは Amazon バナー iframe であり、私のサーバーではなく Amazon でホストされています。

動作しない通常の on バインディングの例: http://jsbin.com/oyanis/4/edit

4

1 に答える 1

4

iframeコンテンツを「クリック」するための巧妙なトリックがあります。

あなたができること:

<div id="iframeinside">
    <iframe />
</div>

これにより、jsで次のように言うことができるようになります。

 var oldActive = document.activeElement; /* getting active Element */
 var frame = $('#iframeinside iframe')[0];
 $('#iframeinside').mouseenter(function() {
      /* Setting interval to 1ms for getting eventually x,y mouse coords*/
      oldActive = document.activeElement;
      setInterval('doSomething()', 1); 
 });

 $('#iframeinside').mouseleave(function () {
      /* clear interval cause we arent over the element anymore*/
      clearInterval(intervalId); 
 });

これらの間隔は呼び出します:

function doSomething() {
    /* if the focus has changed to the iframe */
    if(oldActive != frame && document.activeElement == frame) {
        oldActive = document.activeElement;
        alert(myQuery);
        alert('click did happen to the iframe');
    }
}

私はこれをいくつかの目的に使用しましたが、常に機能しました。私がチェックしなかったのは、ie6,7以上の兄弟はどうでしたか。

于 2013-02-23T03:43:34.997 に答える