Получить значение поля ввода внутри iframe

Я создаю форму только с Javascript. Я пытаюсь использовать Javascript для получения значения поля ввода, которое находится внутри iframe. Возможно ли получить значение поля, находящегося внутри iframe?

Ответ 1

Да, это должно быть возможно, даже если сайт из другого домена.

Например, на странице HTML на моем сайте у меня есть iFrame, содержимое которого получено с другого сайта. Содержимое iFrame - это одно поле выбора.

Мне нужно уметь читать выбранное значение на моем сайте. Другими словами, мне нужно использовать список выбора из другого домена внутри моего собственного приложения. Я не контролирую любые настройки сервера.

Первоначально, поэтому у нас может возникнуть соблазн сделать что-то подобное (упрощенное):

HTML на моем сайте:

<iframe name='select_frame' src='http://www.othersite.com/select.php?initial_name=jim'></iframe>
<input type='button' name='save' value='SAVE'>

Содержимое HTML iFrame (загружено из select.php в другой домен):

<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();
});

Однако я получаю эту ошибку javascript, когда пытаюсь прочитать значение:

Заблокировано кадр с источником " http://www.myownsite.com" от доступа к кадру с исходным кодом http://www.othersite.com ". Протоколы, домены и порты должны соответствовать.

Чтобы обойти эту проблему, кажется, что вы можете косвенно передавать iFrame из script на свой собственный сайт и иметь script для чтения содержимого с другого сайта с помощью метода типа file_get_contents() или curl и т.д.

Итак, создайте script (например: select_local.php в текущем каталоге) на своем собственном сайте с таким же содержимым:

PHP-контент select_local.php:

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

Также измените HTML для вызова этого локального (вместо удаленного) script:

<iframe name='select_frame' src='select_local.php?initial_name=jim'></iframe>
<input type='button' name='save' value='SAVE'>

Теперь ваш браузер должен думать, что он загружает содержимое iFrame из того же домена.

Ответ 2

<iframe id="upload_target" name="upload_target">
    <textarea rows="20" cols="100" name="result" id="result" ></textarea>
    <input type="text" id="txt1" />
</iframe>

Вы можете получить значение с помощью JQuery

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

работает только с той же ссылкой домена

Ответ 3

Без iframe Мы можем сделать это с помощью JQuery, но это даст вам только Источник HTML-страницы и динамические ссылки или теги html. Почти так же, как и php-решение, но в JQuery:) Код ---

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

Ответ 4

document.getElementById("idframe").contentWindow.document.getElementById("idelement").value;