2009-11-25 20 views
85

Come posso accedere al contenuto di un iframe con jQuery? Ho provato a fare questo, ma non avrebbe funzionato:Come accedere al contenuto di un iframe con jQuery?

contenuti iframe:<div id="myContent"></div>

jQuery:$("#myiframe").find("#myContent")

Come posso accedere myContent?


Similar tojquery/javascript: accessing contents of an iframe but the accepted answer is not what I was looking for.

+0

Ho appena scoperto che la variabile $ incorporata nella console di Firefox non sembra affatto un jQuery completo. (L'ho capito dopo aver capito che non ho nemmeno la variabile jQuery, quindi ho capito che non ho caricato il codice sorgente di jQuery). –

risposta

160

si deve utilizzare il metodo contents():

$("#myiframe").contents().find("#myContent") 

Fonte: http://simple.procoding.net/2008/03/21/how-to-access-iframe-in-jquery/

+3

dammi errore: Errore: autorizzazione negata per accedere alla proprietà 'ownerDocument' –

+22

ime: Probabilmente ti dà errore a causa dei seguenti motivi: 1) Iframe non appartiene allo stesso dominio. 2) Stai provando a leggerlo prima di Iframe load event. – iMatoria

+0

C'è un modo per verificare se il contenuto dell'iframe proviene dallo stesso dominio, prima di tentare di accedervi e ottenere un errore? – Kamafeather

15
<html> 
<head> 
<title></title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script> 
<script type="text/javascript"> 

$(function() { 

    //here you have the control over the body of the iframe document 
    var iBody = $("#iView").contents().find("body"); 

    //here you have the control over any element (#myContent) 
    var myContent = iBody.find("#myContent"); 

}); 

</script> 
</head> 
<body> 
    <iframe src="mifile.html" id="iView" style="width:200px;height:70px;border:dotted 1px red" frameborder="0"></iframe> 
</body> 
</html> 
12

Se la fonte di iframe è un dominio esterno, i browser si nasconderanno il contenuto iframe (Stessa politica di origine). Una soluzione è salvare i contenuti esterni in un file, ad esempio (in PHP):

<?php 
    $contents = file_get_contents($external_url); 
    $res = file_put_contents($filename, $contents); 
?> 

quindi, ottenere il nuovo contenuto del file (stringa) e analizzarlo in html, ad esempio (in jQuery):

$.get(file_url, function(string){ 
    var html = $.parseHTML(string); 
    var contents = $(html).contents(); 
},'html'); 
Problemi correlati