【发布时间】:2016-06-02 08:59:29
【问题描述】:
我有一个应用程序可以在 InAppBrowser 中打开一个外部网站。该网站使用 Java Server Pages 和 Java Server Faces。我想检测用户何时想要下载文件并用意图选择器提示他/下载文件/在 Chrome 中打开文件。
问题是当我点击一个文件时没有任何反应,我也尝试添加一个 DownloadListener,但它从未被调用。网址不包含任何扩展名,因此我无法检测到它,相反,所有请求都是通过带有一些表单数据的当前页面的 POST 发出的,并且响应具有标题:
Content-Disposition:attachment;filename=somefilename.xlsx
Content-Type:application/octet-stream
Transfer-Encoding:chunked
X-FRAME-OPTIONS:SAMEORIGIN
X-Powered-By:Servlet/3.0 JSP/2.2
X-Powered-By:JSF/2.0
我找不到任何方法来让它工作。在 iOS 上,文件在新页面中打开,就像在浏览器中一样,但在 Android 上没有任何反应。
我必须使用 InAppBrowser,因为该应用的作用是为现有网站提供应用,而使用 iframe 不是解决方案,因为它们不允许跨源请求。
更新
这是下载链接的样子:
<form id="j_idt181:0:j_idt196" name="j_idt181:0:j_idt196" method="post" action="/somepathhere/portal.xhtml" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_idt181:0:j_idt196" value="j_idt181:0:j_idt196">
<a href="#" onclick="something.jsfcljs(document.getElementById('j_idt181:0:j_idt196'),{'j_idt181:0:j_idt196:j_idt197':'j_idt181:0:j_idt196:j_idt197'},'');return false">
<img src="/somepathhere/javax.faces.resource/excel.png.xhtml?ln=img" style="width:30px; height: 30px; " title="Download">
Download
</img>
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-5463575505694988987:906233489912842961" autocomplete="off">
</input>
</a>
</input>
【问题讨论】:
标签: cordova android-webview inappbrowser