2010-06-21 16 views
16

Sto tentando di accedere al DOM di un iframe che carica un URL esterno. Ovviamente ottengo un errore di "Permesso negato per" a causa della sicurezza del dominio incrociato. Come posso fare questo lavoro? Ho visto qualcosa fatto con json (ma non riesco a ottenere una stringa json dalla mia fonte esterna) e qualcosa fatto con post HTML da HTML5.jQuery cross iframe scripting

si può vedere dal vivo al: http://jsfiddle.net/QPBvJ/

Il codice è:

$(document).ready(function(){ 
    $('#get').live('click', function() { 

     var currentIFrame = $('#frameDemo'); 
     currentIFrame.contents().find("a").css("background-color","#BADA55"); 

     alert ("done") 
    }); 
    }); 

<iframe src="http://api.jquery.com/" width="80%" height="600" id='frameDemo'></iframe> 
<button id="get">Get</button> 

quello che sarebbe il modo più semplice per fare questo lavoro. Grazie

+0

È possibile controllare questo post con un relativo alle richieste di dominio croce: ** [Caricando pagina croce dominio html con jQuery AJAX] (http: //stackoverflow.com/a/17299796/2247494)** – jherax

risposta

27

Non c'è modo di farlo funzionare. A meno che il dominio straniero che si tenta di accedere supporti una procedura come C.O.R.S, JSONP o postMessage.

Ci sono poche eccezioni (come sempre):

Se hai a che fare con una WebApp per esempio, si può dire agli utenti che devono concedere l'accesso a cross-domain-calls.

In Gecko/Firefox, per esempio, è possibile chiamare

netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead') 

che permette al browser per accedere domini esterni tramite ajax/iframes. In questo scenario, un utente deve impostare

signed.applets.codebase_principal_support 

a true sotto about:config per fare questo lavoro.

Nel Internet Explorers di questo mondo, c'è un ambiente chiamato qualcosa come allow cross-domain access profondamente nascosto nella scheda security, che deve essere impostato su enable.

Chrome consente il cross-domain chiama con un argomento di comando:

chrome.exe --disable-web-security 
+0

Ok, grazie per le informazioni. Sto lavorando su questo, dovrebbe funzionare. – Mircea

+0

Qui puoi trovare alcune informazioni relative alle richieste cross-domain: ** [Caricamento della pagina html cross-domain con jQuery AJAX] (http://stackoverflow.com/a/17299796/2247494) ** – jherax