Erkennen, Klicken Sie in Iframe mit JavaScript
Ich verstehe, dass es nicht möglich ist, zu sagen, was der Benutzer tut, innerhalb einer iframe
wenn es cross-domain. Was würde ich gerne tun, ist zu verfolgen, ob der Benutzer geklickt hat, überhaupt in der iframe
. Ich Stelle mir ein Szenario, wo es ist eine unsichtbare div
auf der Oberseite des iframe
und die div
wird nur dann das click-Ereignis der iframe
.
Ist so etwas möglich? Wenn es ist, dann wie würde ich es angehen? Die iframes
sind anzeigen, also ich habe keine Kontrolle über die tags, die verwendet werden.
Es ist möglich und es ist crossbrowser Lösung: stackoverflow.com/a/32138108/1064513
InformationsquelleAutor Russ Bradberry | 2010-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Alles, was Sie tun können, ist zu erkennen, die Maus geht in das iframe, und möglicherweise (wenn auch nicht zuverlässig), wenn es kommt wieder raus (dh. versucht, herauszufinden, den Unterschied zwischen der Zeiger geht über die Anzeige auf seinem Weg woanders versus Verweilen auf der Anzeige).
NÖ, es gibt keinen Weg, um gefälschte einem click-Ereignis.
Durch den Fang das mousedown-Sie würde verhindern, dass die ursprüngliche auf von der iframe. Wenn Sie könnten bestimmen, Wann Sie die Maustaste darüber gedrückt werden, könnte man versuchen, den unsichtbaren div aus dem Weg, so dass die auf gehen würde... aber es ist auch kein Ereignis, das ausgelöst wird, kurz bevor ein mousedown.
Könnten Sie versuchen, zu erraten, zum Beispiel durch einen Blick zu sehen, wenn der Zeiger zur Ruhe gekommen, zu raten, ein Klick kann sich über zu kommen. Aber es ist Total unzuverlässig, und wenn Sie fehlschlagen, Sie habe nur verloren, sich selbst eine "click-through".
Ja, ist es. Und es ist crossbrowser Lösung: stackoverflow.com/a/32138108/1064513
Ich überprüfte diese links und ich denke, dass die Antwort richtig ist. Sie können nur erkennen Sie in der iframe-aber nicht das, was geklickt wurde.
Ich downvote, nur weil es nicht ganz stimmt. Das meiste, was Sie sagen, ist wahr, aber es gibt Möglichkeiten, wie ist die mehr beliebt, Antwort auf diesen thread.
InformationsquelleAutor bobince
Ist dies sicherlich möglich. Dies funktioniert in Chrome, Firefox und IE 11 (und wahrscheinlich noch andere).
JSFiddle
Anmerkung: in Dieser erkennt nur den ersten Klick. So wie ich das verstehe, ist alles, was Sie wollen.
es ist, weil es wurde 4 Jahre nach der Frage, und die Menschen in der Regel nicht, Blättern Sie vorbei an den ersten paar Antworten.
Auch der Hinweis ist, dass, wenn Sie änderungen browser-tabs wird es Feuer-die focus();
Es funktioniert NICHT in Firefox. JSFiddle enthält Fehler, verbergen: = anstelle von ===. Es ist crossbrowser-Lösung (auch im IE8): stackoverflow.com/a/32138108/1064513
Das blur-Ereignis nicht ausgelöst, wenn der Benutzer nicht klicken Sie in der Haupt-Dokument zuerst! Dies ist auch nicht brauchbar für die Erkennung von Klicks auf mehrere iframes, da es kein Ereignis, das feuert, wenn sich der Fokus ändert sich von einem iframe auf ein anderes iframe ist
blur
- Ereignis nicht ausgelöst).InformationsquelleAutor Paul Draper
Basierend auf Mohammed Radwan Antwort kam ich mit den folgenden jQuery-Lösung. Im Grunde, was Sie tut, ist zu verfolgen, was iFrame Menschen schwebt. Dann, wenn das Fenster verwischt, dass die meisten wahrscheinlich bedeutet, dass der Benutzer auf die iframe-banner.
den iframe, sollte in ein div mit einer id, um sicherzustellen, dass Sie wissen, welche iframe, den der Benutzer geklickt auf:
also:
...
dies hält overiFrame bei -1, wenn keine iFrames schwebte, oder die 'bannerid' in die Umhüllung div, wenn ein iframe schwebte. Alles, was Sie tun müssen ist, überprüfen Sie, ob 'overiFrame' wird gesetzt, wenn das Fenster Unschärfen, etwa so:
...
Sehr elegante Lösung mit einem kleinen Nachteil: wenn ein Benutzer drückt ALT-F4, wenn Sie den Mauszeiger über ein iFrame-es wird protokolliert, es wird ein Klick. Dies passiert nur im FireFox, obwohl, IE, Chrome und Safari nicht registrieren, es.
Nochmals vielen Dank Mohammed, sehr nützliche Lösung!
Schraube, idiot, wer das gemacht hat!!!! Super Antwort, aber, danke. 🙂
Funktioniert auf FF, Chrome, Oper, IE 11. Gott segne Euch 🙂
Funktioniert sogar auf google-AdSense-anzeigen 🙂
Diese Antwort ist die beste von Ihnen, jedoch, wenn Sie erhalten möchten jeden Klick in den iframe, müssen Sie den Fokus aus, sobald der Benutzer geklickt hat, um zu überwachen, weitere Klicks. Diese sollten Hinzugefügt werden um die $(window).blur() Abschnitt:
setTimeout(function(){ window.focus(); }, 0);
. Nun klickt der Benutzer auf, legt den Fokus im iframe das script zieht, den Fokus zurück, und Sie können jetzt überwachen weiterer Schwerpunkt änderungen von zukünftigen Klicks.InformationsquelleAutor patrick
Dies ist die kleine Lösung, die funktioniert in allen Browsern, auch IE8:
Können Sie es hier testen: http://jsfiddle.net/oqjgzsm0/
Dies funktionierte perfekt für mich. Danke!!!
nur cross-browser-zuverlässige Lösung, die funktioniert auch in der neuesten FF! Thx a lot. Es verdient mehr upvotes
Nur bekommen elem.id, das ist Ihre iframe-id :). Siehe jsfiddle.net/oqjgzsm0/219
Abgesehen von der Tatsache, dass mit einem kontinuierlich Schleife Intervall, in solcher Kurs ist nicht eine sehr gute Idee, dies zu erkennen, Fehlalarme, wenn der Benutzer den Fokus auf das iframe durch tab-Taste navigation
InformationsquelleAutor Dmitry Kochin
Dem folgenden code wird Ihnen zeigen, wenn der Benutzer auf/schweben oder aus dem iframe:-
Müssen Sie ersetzen die src des iframe mit Ihren eigenen link. Hoffe, das wird helfen.
Grüße,
Mo.
Scheint nicht zu funktionieren hier mit einem youtube-iframe.
Funktioniert bei Chrome, aber nicht Firefox v62, denn wenn klicken Sie auf iframe blur - Ereignis wird nicht ausgelöst
InformationsquelleAutor Mohammed Radwan
Fand diese Lösung...
Ich habe es versucht, ich habe es geliebt..
Werke für cross-domain-iframe für desktop und mobile!
Weiß nicht, ob es ist kinderleicht und doch
Happy coding
InformationsquelleAutor Tony
Können Sie erreichen dies, indem Sie den blur-event auf window-element.
Hier ist ein jQuery-plugin für tracking-klicken Sie auf iframes (es wird Feuer eine benutzerdefinierte callback-Funktion, wenn ein iframe geklickt wird) :
https://github.com/finalclap/iframeTracker-jquery
Verwenden Sie es wie diese :
InformationsquelleAutor Vince
sehen http://jsfiddle.net/Lcy797h2/ für meine langatmige Lösung, die nicht zuverlässig arbeiten, in Internet Explorer
Seine awesome coding Mann.... was ich eigentlich will...+1 @Omar Jackman.. so viel hilfreich zu erfassen, klicken Sie auf youtube-Werbung
InformationsquelleAutor DiverseAndRemote.com
Mohammed Radwan,
Deine Lösung ist elegant. Zu erkennen iframe-Klicks in Firefox und IE verwenden, können Sie eine einfache Methode mit dem Dokument.activeElement und einen timer, aber... ich habe gesucht alle über das interwebs für eine Methode zur Erkennung von Klicks auf ein iframe in Chrome und Safari. Am Rande des Aufgebens, ich finde Ihre Antwort. Danke, sir!
Einige Tipps:
Ich habe festgestellt, dass Ihre Lösung mehr zuverlässig, wenn sich der Aufruf der init () - Funktion direkt, anstatt durch attachOnloadEvent(). Natürlich, das zu tun, müssen Sie den Aufruf init() erst nach den iframe-html. So würde es Aussehen:
InformationsquelleAutor zone117x
Können Sie dies tun, um bubble Veranstaltungen zu übergeordneten Dokument:
Verlängern Sie einfach die ereignissübersicht für weitere Veranstaltungen.
InformationsquelleAutor Taner Topal
Lief ich in eine situation, wo ich musste, Klicks auf social-media-button gezogen wird durch ein iframe. Einem neuen Fenster geöffnet werden würden, wenn die Schaltfläche geklickt wurde. Hier war meine Lösung:
InformationsquelleAutor pizza-r0b
Diese funktioniert auf jeden Fall, wenn der iframe von der selben domain wie Ihre übergeordneten Website. Ich habe es nicht getestet für cross-domain-Websites.
Ohne jQuery Sie könnten versuchen, so etwas wie dieses, aber wieder habe ich nicht versucht, diese.
Können Sie sogar filtern Sie Ihre Ergebnisse:
InformationsquelleAutor Jonathan Tonge
Ich glaube, Sie können etwas tun:
mithilfe von jQuery um dies zu erreichen.
Hat bei mir nicht funktioniert entweder. Ich wünschte, es Tat.
dies funktioniert nur bei gleichen Ursprung iframes
InformationsquelleAutor Daniel Sellers
Als dort gefunden : Erkennen, Klicken Sie in Iframe mit JavaScript
=> Wir können iframeTracker-jquery :
InformationsquelleAutor Mickaël
Basiert in der Antwort von Paul Draper, habe ich eine Lösung, die kontinuierlich arbeiten, wenn Sie haben, Iframes, dass andere öffnen " im browser. Zurück, wenn man die Seite weiter aktiv sein zu erkennen, klicken Sie über dem Rahmen, dies ist eine sehr häufige situation:
Der Code ist einfach, das blur-Ereignis erkennen, die den Verlust des Fokus, wenn Sie den iframe geklickt wird, und testen Sie, ob das aktive element ist das iframe (, wenn mehrere iframe können Sie wissen, wer ausgewählt wurde) diese situation ist Häufig, wenn Sie publicity-frames.
Den zweiten event auslösen focus-Methode, wenn Sie zu der Seite zurückkehren. es wird verwendet, die Sichtbarkeit change-Ereignis.
InformationsquelleAutor freedeveloper
Hier ist die Lösung mit Hilfe empfohlene Vorgehensweisen bei hover+Unschärfe und aktive element tricks, keine Bibliotheken, nur reines js. Funktioniert gut, für FF/Chrome. Meist approache ist die gleiche wie @Mohammed Radwan vorgeschlagen, außer, dass ich die andere Methode vorgeschlagen von @zone117x zu verfolgen iframe klicken Sie auf für FF, weil Fenster.Fokus funktioniert nicht ohne den Zusatz Benutzer-Einstellungen:
Hier ist die Verbindung Methode:
InformationsquelleAutor slesh