Aplikacja pakowana w Chrome - pobieranie pliku z Webview
Pracuję nad tym, aby istniejąca aplikacja internetowa w stylu Ajax funkcjonowała jako aplikacja pakowana w Chrome. Aplikacja Ajax działa w widoku sieci Web wewnątrz spakowanej aplikacji i najczęściej działa świetnie.
Aplikacja Ajax pozwala użytkownikom przesyłać dokumenty przy użyciu standardowego przesyłania HTML 5 i przeciągania / upuszczania. Przesyłanie działa poprawnie, alepobieranie nie działa.
Jest to uproszczona próbka logiki w aplikacji Ajax. Używa Javascript do obsługi zdarzenia click, wykonuje logikę, a następnie uruchamia pobieranie, ustawiając lokalizację ukrytej ramki IFrame.
<html>
<head>
<script type="text/javascript">
function downloadFile(url) {
window.frames['dataTransfer'].location = url;
}
</script>
</head>
<body>
<a href="http://www.google.com" target="_blank">Google</a><br/>
<a href="https://s3.amazonaws.com/LYHKDevA1/2058e6cab4304af3a39eeb275eeac96d?response-content-disposition=attachment%3Bfilename%3D%22TestFile.pdf%22%3Bfilename*%3DUTF-8%27%27TestFile.pdf&Signature=FUlZZqNoJ%2F%2FvHIPX6CPDkvJ7uik%3D&Expires=1437854276&AWSAccessKeyId=1ZAN0NYFJ2DCQX8AN8G2" target="_blank">Download PDF</a><br/>
<a href="#" onclick="downloadFile('https://s3.amazonaws.com/LYHKDevA1/2058e6cab4304af3a39eeb275eeac96d?response-content-disposition=attachment%3Bfilename%3D%22TestFile.pdf%22%3Bfilename*%3DUTF-8%27%27TestFile.pdf&Signature=FUlZZqNoJ%2F%2FvHIPX6CPDkvJ7uik%3D&Expires=1437854276&AWSAccessKeyId=1ZAN0NYFJ2DCQX8AN8G2');return false;" target="_blank">Download PDF JS</a><br/>
<iframe name="dataTransfer" style="width: 0; height: 0; border: none;"></iframe><br/>
</body>
</html>
Jeśli uruchomisz to w standardowej karcie Chrome, wszystkie 3 linki działają prawidłowo. Jednak w aplikacji Chrome tylko pierwsze 2 linki działają - kliknięcie trzeciego linku nic nie robi. W sekcji sieciowej narzędzi dla programistów pojawia się, aby rozpocząć pobieranie, ale następnie jest szybko anulowane.
Manifest aplikacji Chrome pozwala przeglądać strony internetowe i odpowiednie domeny.
{
"manifest_version": 2,
"name": "Test Download",
"version": "0.1.0",
"permissions": [
"webview",
"<DOMAIN OF THE SAMPLE PAGE ABOVE>",
"https://s3.amazonaws.com/"
],
"app": {
"background": {
"scripts": ["background.js"]
}
},
"icons": {},
"minimum_chrome_version": "28"
}
Aplikacja Chrome ma kilka prostychnewwindow
obsługa w tym również.
window.onload = function() {
var webview = document.querySelector('#app-webview');
webview.src = '<URL TO SAMPLE PAGE ABOVE>';
webview.addEventListener('newwindow', function(e) {
e.preventDefault();
e.stopPropagation();
window.open(e.targetUrl);
});
};
Jakieś sugestie dotyczące sposobu pobierania plików do pobrania (miejmy nadzieję, bez konieczności wprowadzania istotnych zmian w aplikacji Ajax)?