javascript - pasar - iframe document
Obtener valor del campo de entrada dentro de un iframe (4)
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
?
Sin Iframe Podemos hacer esto por JQuery pero le dará solo la fuente de la página HTML y no se mostrarán enlaces dinámicos ni etiquetas 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);
});
Sí, debería ser posible, incluso si el sitio es de otro dominio.
Por ejemplo, en una página HTML de mi sitio tengo un iFrame cuyos contenidos provienen de otro sitio web. El contenido de iFrame es un único 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 del servidor.
Inicialmente, por lo tanto, podríamos estar tentados a hacer algo como esto (simplificado):
HTML en mi sitio:
<iframe name=''select_frame'' src=''http://www.othersite.com/select.php?initial_name=jim''></iframe>
<input type=''button'' name=''save'' value=''SAVE''>
Contenido HTML de iFrame (cargado desde select.php
en otro dominio):
<select id=''select_name''>
<option value=''john''>John</option>
<option value=''jim'' selected>Jim</option>
</select>
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 intento leer el valor:
Bloquea un marco con origen " http://www.myownsite.com " para que no acceda a un marco con origen " http://www.othersite.com ". Los protocolos, dominios y puertos deben coincidir.
Para solucionar este problema, parece que puede generar indirectamente el iFrame de un script en su propio sitio , y hacer que ese script lea el contenido del otro sitio utilizando un método como file_get_contents()
o curl
etc.
Entonces, 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):
<iframe name=''select_frame'' src=''select_local.php?initial_name=jim''></iframe>
<input type=''button'' name=''save'' value=''SAVE''>
Ahora su navegador debería pensar que está cargando el contenido de iFrame del mismo dominio.
document.getElementById("idframe").contentWindow.document.getElementById("idelement").value;
<iframe id="upload_target" name="upload_target">
<textarea rows="20" cols="100" name="result" id="result" ></textarea>
<input type="text" id="txt1" />
</iframe>
Puedes obtener valor por 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