Saya mengerti bahwa tidak mungkin memberi tahu apa yang dilakukan pengguna di dalam iframe
jika domain lintas. Yang ingin saya lakukan adalah melacak jika pengguna mengklik sama sekali di iframe
. Saya membayangkan sebuah skenario di mana ada yang tidak terlihat div
di atas iframe
dan div
kemudian hanya akan melewati acara klik ke iframe
.
Apakah hal seperti ini mungkin? Jika ya, lalu bagaimana saya melakukannya? The iframes
adalah iklan, jadi saya tidak memiliki kontrol atas tag yang digunakan.
javascript
iframe
ads
dom-events
click-tracking
Russ Bradberry
sumber
sumber
Jawaban:
Tidak. Yang dapat Anda lakukan adalah mendeteksi mouse yang masuk ke iframe, dan berpotensi (meskipun tidak andal) ketika keluar kembali (mis. Mencoba mencari tahu perbedaan antara penunjuk yang melewati iklan dalam perjalanannya di tempat lain versus bertahan lama di iklan).
Tidak, tidak ada cara untuk memalsukan acara klik.
Dengan menangkap mousedown Anda akan mencegah klik asli untuk membuka iframe. Jika Anda dapat menentukan kapan tombol mouse akan ditekan, Anda bisa mencoba mengeluarkan div yang tidak terlihat sehingga klik akan melewati ... tetapi juga tidak ada peristiwa yang terjadi tepat sebelum mousedown.
Anda dapat mencoba menebak, misalnya dengan melihat apakah penunjuk telah berhenti, menebak klik yang akan datang. Tapi itu sama sekali tidak bisa diandalkan, dan jika Anda gagal, Anda baru saja kehilangan diri Anda melalui klik-tayang.
sumber
Ini tentu saja mungkin. Ini berfungsi di Chrome, Firefox, dan IE 11 (dan mungkin yang lain).
JSFiddle
Peringatan: Ini hanya mendeteksi klik pertama. Seperti yang saya mengerti, itu yang Anda inginkan.
sumber
blur
acara iframe tidak menyala).Berdasarkan jawaban Mohammed Radwan saya datang dengan solusi jQuery berikut. Pada dasarnya yang dilakukannya adalah melacak apa yang orang iFrame hovering. Kemudian jika jendela mengaburkan itu kemungkinan besar berarti pengguna mengklik spanduk iframe.
iframe harus diletakkan di div dengan id, untuk memastikan Anda tahu iframe mana yang diklik pengguna:
begitu:
... ini membuat iFrame tetap di -1 saat tidak ada iFrame yang melayang-layang, atau 'bannerid' yang diatur dalam div pembungkus ketika iframe melayang-layang. Yang harus Anda lakukan adalah memeriksa apakah 'overiFrame' diatur ketika jendela kabur, seperti: ...
Solusi yang sangat elegan dengan kelemahan minor: jika pengguna menekan ALT-F4 saat mengarahkan mouse ke atas iFrame, itu akan mencatatnya sebagai klik. Ini hanya terjadi di FireFox, IE, Chrome dan Safari tidak mendaftarkannya.
Terima kasih sekali lagi Mohammed, solusi yang sangat berguna!
sumber
setTimeout(function(){ window.focus(); }, 0);
. Sekarang, pengguna mengklik, menempatkan fokus di iframe, skrip menarik fokus itu kembali, dan sekarang dapat memantau perubahan fokus lebih lanjut dari klik di masa depan.Ini adalah solusi kecil yang bekerja di semua browser bahkan IE8:
Anda dapat mengujinya di sini: http://jsfiddle.net/oqjgzsm0/
sumber
Kode berikut akan menunjukkan kepada Anda jika pengguna mengklik / mengarahkan atau keluar dari iframe: -
Anda perlu mengganti src di iframe dengan tautan Anda sendiri. Semoga ini bisa membantu. Salam, Mo.
sumber
Baru saja menemukan solusi ini ... Saya mencobanya, saya menyukainya ..
Berfungsi untuk iframe lintas domain untuk desktop dan seluler!
Tidak tahu apakah itu sangat mudah
Selamat coding
sumber
Anda dapat mencapai ini dengan menggunakan blur event pada elemen window.
Berikut ini adalah plugin jQuery untuk melacak klik pada iframe (ini akan menjalankan fungsi callback kustom ketika iframe diklik): https://github.com/finalclap/iframeTracker-jquery
Gunakan seperti ini:
sumber
lihat http://jsfiddle.net/Lcy797h2/ untuk solusi panjang lebar saya yang tidak berfungsi dengan baik di IE
sumber
Ini berfungsi untuk saya di semua browser (termasuk Firefox)
https://gist.github.com/jaydson/1780598
https://jsfiddle.net/sidanmor/v6m9exsw/
<iframe id="idanmorblog" src="https://sidanmor.com/" style="width:400px;height:600px" ></iframe>
sumber
Mohammed Radwan, Solusi Anda elegan. Untuk mendeteksi klik iframe di Firefox dan IE, Anda dapat menggunakan metode sederhana dengan document.activeElement dan timer, namun ... Saya telah mencari di seluruh jalinan metode untuk mendeteksi klik pada iframe di Chrome dan Safari. Di ambang menyerah, saya menemukan jawaban Anda. Terima kasih Pak!
Beberapa tips: Saya telah menemukan solusi Anda lebih dapat diandalkan ketika memanggil fungsi init () secara langsung, daripada melalui attachOnloadEvent (). Tentu saja untuk melakukan itu, Anda harus memanggil init () hanya setelah iframe html. Jadi akan terlihat seperti:
sumber
Anda dapat melakukan ini untuk menggelembungkan acara ke dokumen induk:
Cukup rentangkan daftar acara untuk lebih banyak acara.
sumber
Saya mengalami situasi di mana saya harus melacak klik pada tombol media sosial yang ditarik melalui iframe. Jendela baru akan dibuka ketika tombol diklik. Inilah solusi saya:
sumber
http://jsfiddle.net/QcAee/406/
Buat saja lapisan yang tidak terlihat di atas iframe yang kembali ketika klik dan naik ketika acara mouse akan dipecat !!
Butuh jQuery
solusi ini jangan menyebarkan klik pertama di dalam iframe!
sumber
Ini pasti berfungsi jika iframe berasal dari domain yang sama dengan situs induk Anda. Saya belum mengujinya untuk situs lintas domain.
Tanpa jQuery Anda dapat mencoba sesuatu seperti ini, tetapi sekali lagi saya belum mencoba ini.
Anda bahkan dapat memfilter hasil Anda:
sumber
Menggabungkan jawaban di atas dengan kemampuan untuk mengklik lagi dan lagi tanpa mengklik iframe luar.
sumber
Kami dapat menangkap semua klik. Idenya adalah mengatur ulang fokus pada elemen di luar iFrame setelah setiap klik:
JSFiddle
sumber
Saya yakin Anda bisa melakukan sesuatu seperti:
menggunakan jQuery untuk mencapai ini.
sumber
Seperti yang ditemukan di sana: Deteksi Klik ke Iframe menggunakan JavaScript
=> Kita bisa menggunakan iframeTracker-jquery :
sumber
Berbasis di jawaban Paul Draper, saya menciptakan solusi yang bekerja terus menerus ketika Anda memiliki Iframe yang membuka tab lain di browser. Ketika Anda kembali halaman terus aktif untuk mendeteksi klik di atas kerangka kerja, ini adalah situasi yang sangat umum:
Kode sederhana, peristiwa blur mendeteksi kehilangan fokus ketika iframe diklik, dan menguji apakah elemen aktif adalah iframe (jika Anda memiliki beberapa iframe Anda bisa tahu siapa yang dipilih) situasi ini sering terjadi ketika Anda memiliki bingkai publisitas .
Acara kedua memicu metode fokus saat Anda kembali ke halaman. digunakan acara perubahan visibilitas.
sumber
Berikut adalah solusi menggunakan pendekatan yang disarankan dengan hover + blur dan trik elemen aktif, bukan pustaka, hanya js murni. Berfungsi baik untuk FF / Chrome. Kebanyakan pendekatan sama dengan yang diusulkan @Mohammed Radwan, kecuali bahwa saya menggunakan metode berbeda yang diusulkan oleh @ zone117x untuk melacak klik iframe untuk FF, karena window.focus tidak berfungsi tanpa penambahan pengaturan pengguna :
Berikut adalah metode majemuk:
sumber
Asumsi -
Ini berfungsi baik untuk iframe yang sumber maupun sumber
Jika tab baru dibuka / halaman yang sama diturunkan dan pointer mouse berada di dalam Iframe, klik dianggap
sumber