2010-12-10 18 views

Odpowiedz

3

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"); 
}); 
+11

Ładowanie elementu iframe nie ma nic do wykrycia kliknięcia łącza w elemencie iframe – epascarello

+1

, dlaczego? Po kliknięciu linku zostanie zmieniona lokalizacja elementu iframe, a więc zdarzenie ładowania iframe powinno zostać uruchomione. – Anton

+3

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

8

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); 
} 
+0

zakłada to, że element iframe nie jest domeną krzyżową. – erikvold

+0

@erikvold: Prawidłowe. Dodałem notatkę do mojej odpowiedzi. –

Powiązane problemy