2010-07-18 11 views

risposta

4

Vedere http://api.jquery.com/contents/ per accedere al documento di contenuto di un iframe.

Una soluzione alla tua domanda potrebbe essere:

$("iframe#name").contents().find(".fineme").bind("mouseover", function() { alert("Found me"); }); 
+0

Interessante, ma anche quello non sembra funzionare? – AnApprentice

+0

Funziona per me. Forse la classe dovrebbe essere '.findme' invece di' .fineme'? –

+2

Potrebbe essere necessario avvolgere questo in un controllo per assicurarsi che l'iframe sia stato caricato. Se provi ad accedere ai contenuti prima che l'iframe sia caricato, non sarai in grado di trovarlo. Avvolgi in $ ("nome iframe"). Load(). – naivedeveloper

1

Sì, sembra che di default se si esegue un selettore dalla finestra padre non troverà elementi all'interno del iframe. Tuttavia, puoi dare esplicitamente a jQuery il contesto per guardare all'interno dell'iframe.

Un modo per fare questo sarebbe:

var iframe = $("#someIframeId"); 
$(".fineme",iframe.get(0).contentDocument).mouseover(function(){alert('hi')}); 

NOTA: Questo funziona solo se entrambi il sito padre e l'IFrame sono sullo stesso dominio. Per ulteriori informazioni su questo argomento: http://madskristensen.net/post/Iframe-cross-domain-JavaScript-calls.aspx

+1

Interessante, ma non sembra funzionare? – AnApprentice

+1

Una cosa da notare: affinché funzioni, l'iframe deve trovarsi nello stesso dominio della pagina. Se sono su domini diversi penso che la sicurezza del browser mi impedisca di lavorare. –

+0

Funziona bene per jQuery nativo, ma per quanto riguarda gli oggetti dell'interfaccia utente jQuery? Ad esempio, se chiami ridimensionabile sull'elemento, non avrà il contesto del mouse. Devi fare clic sulle maniglie ridimensionabili e trascinare il mouse all'esterno dell'iframe affinché risponda ai movimenti del mouse. – naivedeveloper

1

Ho avuto un problema simile e ho trovato una soluzione che funziona per me. Prova questo:

document.getElementById('iframe_id').contentWindow.$('.fineme').on(...) 

Funziona per tutte le funzioni di jQuery, ma in ascolto di eventi in jQuery del dom iFrame.

Problemi correlati