2013-05-16 21 views
8

Sto facendo questa prima volta. Ho creato un iframe sulla mia pagina e voglio il testo dal iframe tramite jquery. Ecco il mio codice:Ottieni dati da iframe

<html> 
    <head><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

    <script type="text/javascript"> 
    function copyIframeContent(iframe){ 
     var iframeContent = $(iframe).contents(); //alert(iframeContent); 
     //$("#result").text("Hello World"); 
     $("#result").html(iframeContent.find('body').html);alert(iframeContent.find('body').html()); 
    } 
    </script> 
    </head> 
    <body> 
    <iframe id="myIframe" onload="copyIframeContent(this);" name="myIframe" src="text.php"></iframe><br /> 
    Result:<br /> 
    <textarea id='result'></textarea> 
    <input type="button" value="click" id="btn" onclick="aa()"> 
    <script type="text/javascript"> 
     function aa(){ alert("Fdf"); 
      alert(document.getElementById('myIframe').contentWindow.document.body.innerHTML); 
    } 
    </script> 
    </body> 
</html> 

text.php:

text to change 

ho provato molto in tutti i browser, ma ancora questo non sta funzionando. Qualcuno può aiutarmi a ottenere questo contenuto?

+0

sì è una stessa pagina e nella stessa directory –

+1

"ma ancora non funziona" Mi sto solo chiedendo cosa significa? Si prega di elaborare dandoci un messaggio di errore se uno qualsiasi –

+0

ho copia/incolla qui il mio codice wholde, ma ancora ora funziona non so perché. in stato di avviso mi mostra [ObectObject] –

risposta

0

Il contentWindow funziona sia in FF e Chrome

document.getElementById('myFrame').contentWindow.document.body  

darebbe un corpo elemento DOM

Si può anche provare qualcosa di simile

window.frames['myIframe'].document.body  

Che potrebbe fare il trucco per voi anche

Potresti avere problemi con il tuo browser costruito in sicurezza. Se lo si esegue su un computer locale. C'è un modo per disabilitare la sicurezza dei browser.

+0

prima di tutto il testo dal testo dell'iframe e poi voglio sostituirlo con il mio div (risultato) –

+0

(document.getElementById ('myFrame'). contentWindow.document.body) .appendchild (div (risultato)) http://www.w3schools.com/dom/met_element_appendchild.asp –

2

Utilizzare .contents() per arrivare al DOM di iFrame.

$('#myIframe').contents() 

UPDATE:

Nella OP:

$("#result").html(iframeContent.find('body').html); 

dovrebbe dire:

$("#result").html(iframeContent.find('body').html()); 
+0

OP sta già utilizzando il contenuto() –

+0

ora funziona .. ho avvisato questo e ottengo "[obect Object]" nell'avviso box –

+0

'$ ('# myIframe'). contents(). find ('body'). html()' too? .contents() restituisce da solo jQuery. –

0

Fare con jQuery sarà un po 'più facile:

$('Your Selector', frames['myIframe'].document) 

L'esempio precedente otterrà qualsiasi cosa da myIframe. Ma l'iframe DEVE essere dello stesso dominio del documento genitore. Se non proviene dallo stesso dominio, si verifica una violazione della sicurezza (non è possibile aggiungere contenuto da siti stranieri alla pagina e modificare tale contenuto).

Se nessuna violazione di sicurezza, è possibile fare qualsiasi cosa con la selezione. Ad esempio, è possibile utilizzare il metodo jquery append() per inserire nuovo html all'interno di iFrame, è possibile utilizzare il metodo html() per sostituire html o qualsiasi altra funzione consentita da jquery/pure javascript.

1
var content=$("iframe").contents().find('body').html(); 

alert(content); 
+5

Hiya, questo potrebbe risolvere il problema ... ma sarebbe bello se tu potessi * modificare la tua risposta * e fornire una piccola spiegazione su come e perché funziona :) Non dimenticare - ci sono un mucchio di neofiti su Stack overflow, e potrebbero imparare una o due cose dalla tua esperienza - ciò che è ovvio per te potrebbe non essere così per loro. –