Ich habe eine App, die eine externe Webseite in InAppBrowser öffnet. Die Website verwendet Java Server Pages und Java Server Faces. Ich möchte feststellen, wann der Benutzer eine Datei herunterladen möchte und ihn mit der Vorsatzauswahl auffordern/die Datei herunterladen/die Datei in Chrome öffnen.Cordova InAppBrowser Download-Datei von JSP-Seite
Das Problem ist, dass nichts passiert, wenn ich auf eine Datei klicken, versuchte ich auch eine DownloadListener Zugabe, aber es wird nie genannt. Die Urls enthält keine Erweiterung, also kann ich es nicht, dass erkennen, stattdessen alle Anfragen durch einen POST auf die aktuelle Seite mit einigen Formulardaten vorgenommen werden, und die Antwort hat die Header:
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
Ich kann keine Möglichkeit finden, das funktioniert zu bekommen. Auf iOS öffnet sich die Datei auf einer neuen Seite, genau wie im Browser, aber auf Android passiert nichts.
Ich muss InAppBrowser verwenden, da die Aufgabe der App darin besteht, eine App für eine bestehende Website bereitzustellen, und die Verwendung eines iFrames keine Lösung darstellt, da sie keine Kreuzherkunftsanforderungen zulassen.
aktualisieren
Dies ist, wie der Download-Link wie folgt aussieht:
<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>
Ich weiß, ich kann nicht durch den InAppBrowser herunterladen, ich möchte nur "erkennen", wenn der Benutzer eine Datei klickt und irgendwie das Intent-System verwendet, um es herunterzuladen, oder öffnen Sie es einfach in Chrom oder verwenden Sie das Plugin . Aber ich habe keine Ahnung, wie man den Downloadlink benutzt. Ich habe meine Frage mit einem Beispiellink aktualisiert. – Xzya
Die Kommunikation mit der App aus dem InAppBrowser ist möglicherweise nicht möglich. Ich habe kein Beispiel gesehen, dass jemand das jemals gemacht hat. Das einzige, was ich bin mir dessen bewusst sind die Ereignisse, die die InApprowser Versand wird: 'loadstart',' loadstop', 'loaderror' und' exit'. – johnborges
ich den Quellcode von InAppBrowser bearbeiten könnte, gibt es ein paar Methoden, die hilfreich sein könnten, aber ich habe keine nützliche Art und Weise ihrer Verwendung gefunden. https://developer.android.com/reference/android/webkit/WebView.html#loadUrl(java.lang.String) https://developer.android.com/reference/android/webkit/WebViewClient.html# shouldOverrideUrlLoading (android.webkit.WebView,% 20java.lang.String) – Xzya