gpt4 book ai didi

javascript - 获取 iframe 中输入字段的值

转载 作者:技术小花猫 更新时间:2023-10-29 12:04:11 26 4
gpt4 key购买 nike

我正在创建一个仅使用 Javascript 的表单。我正在尝试使用 Javascript 获取 iframe 内的输入字段的值。是否可以获取 iframe 中字段的值?

最佳答案

如果框架站点位于不同的域中,您不能直接从远程 iframe 中读取值。即便如此,答案是肯定的:通过您自己的域代理框架站点,仍然可以获得该值。

例如,在我网站的 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'>

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”的框架。协议(protocol)、域和端口必须匹配。

要解决此问题,您可以代理“http://www.othersite.com”上的内容,而不是在“http://www.myownsite.com”上托管它。例如,如果您使用的是 PHP,则有一个 PHP 脚本可以使用 file_get_contents()curl 等方法从其他站点读取内容。

因此,在您自己的站点上创建一个脚本(例如:当前目录中的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 内容。

关于javascript - 获取 iframe 中输入字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15002652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com