Jak wykrywać kliknięcie przez użytkownika łącza znajdującego się w ramce iframe za pomocą JavaScript?JavaScript: Wykrywanie kliknięcia linku wewnątrz ramki iframe
Odpowiedz
Jesteś w stanie sprawdzić zdarzenie obciążenia iframe
onLoad="alert(this.contentWindow.location);"
lub jQuery:
$('iframe#yourId').load(function() {
alert("the iframe has been loaded");
});
Ładowanie elementu iframe nie ma nic do wykrycia kliknięcia łącza w elemencie iframe – epascarello
, dlaczego? Po kliknięciu linku zostanie zmieniona lokalizacja elementu iframe, a więc zdarzenie ładowania iframe powinno zostać uruchomione. – Anton
Właściwie to działało dla mnie, ponieważ nie muszę wykrywać każdego kliknięcia w ramce, ale kliknę link, który jest równy zmianie lokalizacji iframe. EDYCJA: Mogę tylko zaakceptować tę odpowiedź, nie mogę głosować z jakiegoś powodu (nie przegłosowałem tego). – Paul
Zakładając, że masz element iframe o identyfikatorze "myIframe", a element iframe pochodzi z tej samej domeny co dokument główny, poniższe wykrywa kliknięcie w dowolnym miejscu dokumentu. To będzie również działać, gdy dokument jest edytowalny, który za pomocą dokumentu onclick
nieruchomość nie:
function iframeClickHandler() {
alert("Iframe clicked");
}
var iframe = document.getElementById("myIframe");
var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
if (typeof iframeDoc.addEventListener != "undefined") {
iframeDoc.addEventListener("click", iframeClickHandler, false);
} else if (typeof iframeDoc.attachEvent != "undefined") {
iframeDoc.attachEvent ("onclick", iframeClickHandler);
}
zakłada to, że element iframe nie jest domeną krzyżową. – erikvold
@erikvold: Prawidłowe. Dodałem notatkę do mojej odpowiedzi. –
Możesz dodać JavaScript do elementu iframe, jeśli element iframe znajduje się w tej samej domenie. – epascarello