获取 iframe 中输入字段的值

新手上路,请多包涵

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

原文由 Muhammad Talha Akbar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 670
2 个回答

如果框架站点位于不同的域中,则无法 直接 从远程 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>

查询:

 $('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,则有一个 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 内容。

原文由 Stefan 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

仅在同一域链接上工作

原文由 Harshit Tailor 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题