【问题标题】:Download attribute not working in Phonegap app下载属性在 Phonegap 应用程序中不起作用
【发布时间】:2016-03-12 16:42:28
【问题描述】:

这不是我的第一个混合应用程序(我已经在 Google Play Store 和 Apple Store 上发布了应用程序)。我的目标平台是安卓。我不确定将支持哪些版本,如果我决定完全发布这个想法,我将在稍后确定。我正在使用 Phonegap Build。

我在使 A 元素的 HTML 下载属性正常工作时遇到了一些问题。这是我所拥有的:

<a download href="http://static.guim.co.uk/sys-images/Guardian/Pix/pictures/2014/4/11/1397210130748/Spring-Lamb.-Image-shot-2-011.jpg">Lamb</a>

如果我删除下载属性,图像会在我的 phonegap 应用程序 (Android) 中打开。有了它,什么也没有发生。至少在 Chrome 中也可以正常工作。有什么想法吗?

【问题讨论】:

  • 您的帖子中没有足够的信息来提供任何类型的解决方案。请在您的帖子中回答以下问题。因为这似乎是你关于这个主题的第一篇文章。这是您的第一个混合应用程序吗?您的目标平台及其目标版本是什么:Android 4、5、6? iOS 7、8、9?你在使用CLI, SDK or Build 吗?请不要假设答案,请阅读链接。回答完问题后,请在 cmets 中回复,以便我知道您已添加信息。
  • 嗨,杰西,感谢您的回复。不,这不是我的第一个混合应用程序(我已经在 Google Play Store 和 Apple Store 上发布了应用程序)。目标平台是安卓。老实说,我不确定会支持哪些版本,如果我决定发布这个想法,我会在以后确定。我正在使用 Phonegap Build。
  • phonegap webview无法下载文件,请使用文件传输插件
  • @Robbert 我要求人们在帖子中添加信息的原因是其他人可以从这些问题中学习。碰巧 jcesarmobile 有正确的答案,但没有细节。稍后我会发布详细信息作为答案。

标签: android html cordova phonegap-build


【解决方案1】:

@罗伯特,
我回答了很多 Cordova/Phonegap 问题,就像这个论坛上的很多志愿者一样。因此,您可能会发现此常见问题解答很有用。

从这个常见问题解答中,您想了解#5 - Phonegap 不是webserver or a webbrowser。这是常见的错误。的确,您可以使用您的网络浏览器来测试您的网页,但不要误以为所有的网络浏览器都是一样的。正如 Paul Irish 喜欢提醒的那样,使用“并非所有的网络浏览器都是平等的”。他的文章Webkit for Developers 很好读。

我引用

不同的端口可以有不同的关注点。 Mac 移植版的重点是浏览器和操作系统,并引入了 Obj-C 和 C++ 绑定以将渲染器嵌入到本机应用程序中。 Chromium 的关注点纯粹是浏览器。 QtWebKit 为应用程序提供了端口,可在其跨平台 GUI 应用程序架构中用作运行时或渲染引擎。

需要明确的是,Phonegap 使用一个名为 webview 的库(在 Android 上,在其他平台上类似)。当前版本基于 Chromium 的“webkit”,但之前它基于旧版本的 Android“webview”——该版本已存在多年。但是,即使有您要查找的属性也可能不可用。

最好的起点是caniuse.com。搜索download 显示大部分支持download,但缺少IE、Safari 和Opera。否则,它似乎可用,但仅适用于 4.4 之后的 Android。看看我的notes,这似乎与 Android 开始使用 Chromium 的 webkit 不谋而合,而不是像我之前所说的过时的 webview 库。

可能的解决方案

正如@jcesarmobile 提到的你可以使用

_OR_

您可以尝试另一个可能具有您正在寻找的属性的 webview 库 - 喜欢crosswalk

目前crosswalk只支持Android,不过the repository也有几个beta版本你也可以试试。而且,如果您的目标平台是 iOS,请改用 WKWebview

注意标准 webview 库已经在您的移动设备上,人行横道是独立的,并且会为您的应用增加至少 20 兆字节。

【讨论】:

  • 谢谢。你问了一个很好的问题——这很少见。一个好问题意味着其他开发人员将从中学习——这是我的最终目标。 FWIW:我正在使用 Javascript 开发机器人技术——其中包括 node.js。我认为几年后 JS 将成为大多数机器人开发人员的选择。
  • 存储在应用程序中的文件是否也是如此?不需要服务器端交互的文件。因此,它不是 http://.... 作为路径,而是像 path/file.mp3 一样存储在本地。因为它也不适用于本地文件。
  • 当然可以读取存储在同一个“应用程序包”中的本地文件。有一些注意事项。 #1 某些媒体类型需要准确的路径描述,这是底层操作系统所要求的。例如,Android 要求 media plugin 路径为 /android_assets/www/(path)/media.mp3。如果您正在寻找示例应用程序,这是我编写的示例应用程序phonegap-media-test
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-23
  • 2015-01-22
  • 2021-03-20
  • 1970-01-01
  • 2014-07-15
  • 1970-01-01
相关资源
最近更新 更多