Obtener valor del campo de entrada dentro de un iframe

Estoy creando un formulario con Javascript solamente. Estoy tratando de usar Javascript para obtener el valor del campo de entrada que está dentro de un iframe . ¿Es posible obtener el valor de un campo que está dentro de un iframe ?

Sí, debería ser posible, incluso si el sitio es de otro dominio.

Por ejemplo, en una página HTML en mi sitio, tengo un iFrame cuyos contenidos provienen de otro sitio web. El contenido de iFrame es un solo campo de selección.

Necesito poder leer el valor seleccionado en mi sitio. En otras palabras, necesito usar la lista de selección de otro dominio dentro de mi propia aplicación. No tengo control sobre ninguna configuración de servidor.

Inicialmente, por lo tanto, podríamos sentirnos tentados a hacer algo como esto (simplificado):

HTML en mi sitio:

   

Contenido HTML de iFrame (cargado desde select.php en otro dominio):

  

jQuery:

 $('input:button[name=save]').click(function() { var name = $('iframe[name=select_frame]').contents().find('#select_name').val(); }); 

Sin embargo, recibo este error de javascript cuando bash leer el valor:

Bloqueado un marco con origen ” http://www.myownsite.com ” de acceder a un marco con origen ” http://www.othersite.com “. Los protocolos, los dominios y los puertos deben coincidir.

Para evitar este problema, parece que puede obtener indirectamente el iFrame de un script en su propio sitio y hacer que el script lea los contenidos del otro sitio utilizando un método como file_get_contents() o curl etc.

Por lo tanto, cree un script (por ejemplo: select_local.php en el directorio actual) en su propio sitio con contenidos similares a este:

Contenido PHP de select_local.php:

 < ?php $url = "http://www.othersite.com/select.php?" . $_SERVER['QUERY_STRING']; $html_select = file_get_contents($url); echo $html_select; ?> 

También modifique el HTML para llamar a este script local (en lugar del remoto):

   

Ahora su navegador debería pensar que está cargando el contenido de iFrame desde el mismo dominio.

  

Puedes obtener valor con JQuery

 $(document).ready(function(){ alert($('#upload_target').contents().find('#result').html()); alert($('#upload_target').contents().find('#txt1').val()); }); 

trabajar solo en el mismo enlace de dominio

Sin Iframe Podemos hacer esto por JQuery, pero le dará solo el origen de la página HTML y no se mostrarán enlaces dynamics o tags html. Casi lo mismo que la solución php, pero en JQuery 🙂 Código —

 var purl = "http://www.othersite.com"; $.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent(purl) + '&callback=?', function (data) { $('#viewer').html(data.contents); }); 
 document.getElementById("idframe").contentWindow.document.getElementById("idelement").value;