在安卓浏览器中使用 iframe ajax

Posted

技术标签:

【中文标题】在安卓浏览器中使用 iframe ajax【英文标题】:use of iframe ajax in android browser 【发布时间】:2013-01-18 23:04:28 【问题描述】:

我有一个用于 android 应用程序的 html 页面。从这个页面我需要将数据发布到服务器,响应是一个需要下载的附件。为此,我使用了隐藏的 iframe hack。但不幸的是它失败了。谁能解释根本原因?

函数下载() var iframe = document.createElement("iframe"); //iframe.src = "http://localhost:9080/HttpOptions/MultiPartServlet"; iframe.style.display = "无"; iframe.id = "我的框架"; document.body.appendChild(iframe); var doc = document.getElementById("myframe").contentWindow.document; var form = doc.createElement("form"); form.setAttribute("name", "theForm"); // 给表单一个名字 form.setAttribute("id", "theForm"); // 给表单一个名字 form.setAttribute("action", "http://localhost:9080/HttpOptions/MultiPartServlet"); // 给表单一个动作 form.setAttribute("方法", "post"); // 给表单一个方法 var par1 = doc.createElement("input"); par1.setAttribute("name", "theSubmit"); // 给输入一个名字 par1.setAttribute("类型", "提交"); // 使其成为提交按钮 par1.setAttribute("值", "提交"); // 给输入一个值 var par2 = doc.createElement("input"); par2.setAttribute("name", "name"); // 给输入一个名字 par2.setAttribute("类型", "文本"); // 使其成为提交按钮 par2.setAttribute("值", "deepak"); // 给输入一个值 form.appendChild(par1); form.appendChild(par2); doc.body.appendChild(form); var myframe = document.getElementById('myframe'); var innerDoc = iframe.contentDocument || iframe.contentWindow.document; form.submit();

【问题讨论】:

failing 是什么意思? 它显示一个错误,说访问 iframe 是一个安全问题 【参考方案1】:

在父页面和框架页面中将document.domain 设置为相同的值。

例子:

<script type="text/javascript">
document.domain = 'example.com';
</script>

把这个放在父页面和框架页面中,问题就消失了。

【讨论】:

该html没有在android中浏览。它被用在一个使用phonegap包装的应用中 仍然需要处理跨域问题。 iframe 用于解决跨域问题,而不是进行 ajax 调用。同一段代码在 chrome 和 safari 浏览器中工作。该问题仅在 android 浏览器中可见 它与本地主机路径有关吗?我猜移动浏览器不太喜欢 localhost。

以上是关于在安卓浏览器中使用 iframe ajax的主要内容,如果未能解决你的问题,请参考以下文章

谷歌Chrome浏览器安卓版的使用技巧分享

安卓浏览器远程调试

如何在安卓手机上使用Chrome插件

谷歌:将为使用WebView的安卓应用默认开启安全浏览功能

安卓图片浏览软件哪个最好?

安卓网络浏览器和虚拟键盘