在安卓浏览器中使用 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的主要内容,如果未能解决你的问题,请参考以下文章