4

私はこの投稿を読みました。 JavaScriptを使用してIframeへのクリックを検出

しかし、それでも、人々は同じようなことをしたようです。これを行う方法を教えてください。

ある開発者は私に言った:

IFRAMEの上に透明なDIVを配置できます。そのDIVのサイズをIFRAMEと同じかそれより大きくします。そして、より高いz-indexCSSプロパティを使用します。

次に、IFRAMEをクリックすると、DIVがイベントを受信します。

しかし、世界は完璧ではないため、IFRAME内をクリックする機能を失いました。

しかし、私はdivがあまり得意ではなく、これを行う方法を学びたいと思っています。ありがとう

PSそれはクロスドメインまたはエイリアンドメインイフラミングについてです。

4

3 に答える 3

3

私があなたがここで何を求めているかを理解しているなら:

jsFiddle

// PLACE OVERLAY OVER EACH IFRAME
var W=0, H=0, X=0, Y=0;
$(".iframe").each(function(i,el){
   W = $(el).width();
   H = $(el).height();
   X = $(el).position().left;
   Y = $(el).position().top;
   $(this).after('<div class="overlay" />');
    $(this).next('.overlay').css({
        width: W,
        height: H,
        left: X,
        top: Y        
    });
});

// TRACK MOUSE POSITIONS (the overlay will prevent clicks on iframe page)
var mx = 0, my = 0;
$('.overlay').on('mousemove click',function(e){
    mx = e.clientX - $(this).position().left;
    my = e.clientY - $(this).position().top;

    if(e.type==='click'){
        alert('clicked at: X='+mx+' Y='+my)
    }        
});
于 2012-04-19T11:57:48.993 に答える
1

透過的なdivは、すべてのクリックイベントをキャッチし、iframeに拡散しないため、機能しないと思います。

したがって、iframeのクリックを追跡するために私が知っている唯一の回避策は、blurイベントを使用することです。iframeTracker jQueryプラグインを使用して、これを簡単に行うことができます。

jQuery(document).ready(function($){
    $('.iframe_wrap iframe').iframeTracker({
        blurCallback: function(){
            // Do something when iframe is clicked (like firing an XHR request)
        }
    });
});
于 2013-04-03T17:55:23.110 に答える
0

Jqueryの.liveメソッドを確認してください。

コンテンツがdivにロードされるときなど、現在および将来、イベントハンドラーをセレクターにアタッチできます。

http://api.jquery.com/live/

于 2012-04-21T01:55:55.693 に答える