Javascriptのみでフォームを作成しています。内にある入力フィールドの値を取得するために Javascript を使用しようとしていますiframe
。内にあるフィールドの値を取得することは可能iframe
ですか?
4 に答える
フレーム化されたサイトが別のドメインにある場合、リモート iframe から値を直接読み取ることはできません。それでも、答えはイエスです。独自のドメインを介してフレーム化されたサイトをプロキシすることで、その値を取得することは依然として可能です.
たとえば、私のサイトの HTML ページには、別の Web サイトからコンテンツを取得した 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'>
iFrame の HTML コンテンツ (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」のフレームにアクセスするのをブロックしました。プロトコル、ドメイン、およびポートが一致する必要があります。
この問題を回避するには、「http://www.othersite.com」でコンテンツをプロキシし、代わりに「http://www.myownsite.com」でホストします。たとえば、PHP を使用している場合は、file_get_contents()
またはcurl
などの方法を使用して、他のサイトからコンテンツを読み取る PHP スクリプトを用意します。
select_local.php
したがって、次のような内容のスクリプトを自分のサイトに(たとえば、現在のディレクトリに) 作成します。
select_local.php の PHP コンテンツ:
<?php
$url = "http://www.othersite.com/select.php?" . $_SERVER['QUERY_STRING'];
$html_select = file_get_contents($url);
echo $html_select;
?>
また、このローカル (リモートではなく) スクリプトを呼び出すように HTML を変更します。
<iframe name='select_frame' src='select_local.php?initial_name=jim'></iframe>
<input type='button' name='save' value='SAVE'>
これで、ブラウザーは同じドメインから iFrame コンテンツを読み込んでいると認識するはずです。
<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());
});
同じドメインリンクでのみ機能する
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);
});