Я создаю форму только с Javascript. Я пытаюсь использовать Javascript для получения значения поля ввода, которое находится внутри iframe
. Возможно ли получить значение поля, находящегося внутри 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;