我正在创建一个仅使用 Javascript 的表单。我正在尝试使用 Javascript 获取 iframe
中的输入字段的值。是否可以获取 iframe
中的字段的值?
原文由 Muhammad Talha Akbar 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在创建一个仅使用 Javascript 的表单。我正在尝试使用 Javascript 获取 iframe
中的输入字段的值。是否可以获取 iframe
中的字段的值?
原文由 Muhammad Talha Akbar 发布,翻译遵循 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 许可协议
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
如果框架站点位于不同的域中,则无法 直接 从远程 iframe 中读取值。即便如此,答案是肯定的:通过您自己的域代理框架站点,仍然可以获得该值。
例如,在我网站的 HTML 页面中,我有一个 iFrame,其内容来自另一个网站。 iFrame 内容是单个选择字段。
我需要能够读取我网站上的选定值。换句话说,我需要在我自己的应用程序中使用来自另一个域的选择列表。我无法控制任何服务器设置。
因此,最初我们可能会想做这样的事情(简化):
我网站中的 HTML:
iFrame 的 HTML 内容(从另一个域上的
select.php
加载):查询:
但是,当我尝试读取值时收到此 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 内容:
还要修改 HTML 以调用此本地(而不是远程)脚本:
现在您的浏览器应该认为它正在从同一域加载 iFrame 内容。