2010-03-18 11 views
5

ich will erkennen klicken INSIDE iframe nicht onclick auf iframe selbst ich versuchte onclick event du musst auf iframe selbst klicken, um funktion auszulösen ich versuchte sogar addeventlistener zu fenster oder dokument nichts funktioniert, als ob der iframe nicht da wäre Funktion nie triger, wenn ich innen iframe klicken :(plz helperkennen klicken innerhalb iframe

+1

Haben Sie versucht, den Hörer mit auf dem BODY-Tag des Inhalts innerhalb der Putten iframe? – Zoidberg

+0

Es ist eine externe Site in einem iframe; Ich kann nichts dazu hinzufügen ... – santa

+0

Es ist möglich, siehe Crossbrowser-Lösung: http://StackOverflow.com/A/32138108/1064513 –

Antwort

2

Aus Sicherheitsgründen Sie sind nicht soll in der Lage sein, Tätigkeiten in einem iFRAME zu verfolgen, die auf eine andere Website geht. Wenn Sie einen iFRAME auf Ihrem eigene Website, die zu einer anderen Seite auf Ihrer eigenen Website führt, dann lösen Sie dies, indem Sie das Klick-Tracking direkt in den Code einfügen, den IFRAME ausführt

Wenn dies nicht möglich ist, können Sie Ihren eigenen angepassten Proxy-Server für den IFRAME: ed-Webserver einrichten und auf diese Weise können Sie Ihr eigenes Klick-Tracking erneut hinzufügen. Siehe Mousehole von _why für Codebeispiele.

0

Sie könnten ein transparentes DIV auf dem IFRAME platzieren.
Sie Größe, die DIV auf die gleiche Größe oder größer als die IFRAME.
Und mit einem höheren Z-Index CSS-Eigenschaft.

Wenn Sie dann auf das IFRAME klicken, empfängt das DIV das Ereignis.

Aber da die Welt nicht perfekt ist, haben Sie jetzt die Fähigkeit verloren, in das IFRAME zu klicken.

+0

Wenn jemand dies getan und den Klick auf das Div erfasst, würde es einen Weg geben um es zu propagieren (es würde wirklich einen Klick auf die gleiche Stelle im zugrunde liegenden iframe simulieren ...)? – Benj

+0

Das div empfängt in diesem Fall das click-Ereignis nicht. Wenn der Inhalt aus einer anderen Domäne stammt, ist keine Klickerkennung über oder im Iframe möglich. – Andy

9

funktioniert nur auf Iframes auf der gleichen Domain:

$('body', $('select-your-iframe-here').contents()).click(function(event) { 
    console.log('Clicked! ' + event.pageX + ' - ' + event.pageY); 
}); 
+0

Cross Domain und Crossbrowser-Lösung: http://Stackoverflow.com/a/32138108/1064513 –

3

Versuchen Sie, diese

$(window).click(function(e){ 
    $('#result').text('Clicked inside document'); 
}); 

$(window).blur(function(e){ 
    $('#result').text('Clicked out of the window or on the iframe'); 
});​ 

Test http://jsfiddle.net/4vBRe/

nur das Klicken auf iframe Um festzustellen, dann Mouseover-Ereignis verwenden, dann verschwimmen

+2

Dies funktioniert ...Ich nehme an, nicht in jeder Situation, aber es ist ein praktischer Trick – byronyasgur

6

Mit Webbrowsern können Sie nicht auf den Inhalt eines Iframes zugreifen aus Sicherheitsgründen (außer wenn der iFrame in derselben Domäne wie die übergeordnete Seite ist).

Es gibt jedoch einen Workaround, bei dem das Blur-Ereignis verwendet wird, das beim Klicken auf einen Iframe ausgelöst wird (da der Iframe zwar den Fokus erhält, die übergeordnete Seite jedoch verloren geht).

Ich habe ein jQuery-Plugin geschrieben, das diesen Tipp verwendet, um Klicks auf iframe zu erkennen, es ist hier verfügbar: https://github.com/finalclap/iframeTracker-jquery. Sie können das Tutorial unter http://www.finalclap.com/tuto/track-iframe-click-jquery-87/ (es ist in Französisch) lesen.

es verwenden zu können, müssen Sie nur die iframe Element entsprechen (s) Sie verfolgen möchten, eine Rückruffunktion liefert:

jQuery(document).ready(function($){ 
    $('.iframe_wrap iframe').iframeTracker({ 
     blurCallback: function(){ 
      // Do something when iframe is clicked (like firing an XHR request) 
     } 
    }); 
}); 
+0

Gibt es eine Möglichkeit, alle Klicks innerhalb des IFrame und nicht nur die erste zu erkennen? – Gab

+0

Ich glaube nicht, wegen der gleichen Ursprungsrichtlinie: https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy – Vince

Verwandte Themen