我已经设法成功保存了一个网页(x/html),但我还想保存其中包含的图像和mp4视频,以便在离线模式下进一步显示.
我可以访问iOS文件系统,所以我通过AJAX请求获取代码保存html,然后将其保存到文件中.
我真的不知道如何对视频和图像做同样的事情.我有一个服务器,我可以从我的应用程序发送查询,因此它只显示我需要下载的内容,并在必要时使用最佳标头.我只是不知道如何从客户端(Javascript)"下载"它.
在此先感谢您的帮助.
我们公司希望将一些营销/培训内容放到USB拇指驱动器上,以便分发给我们的客户.
内容是HTML +一些嵌入式视频.视频(目前为.flv)不是交互式的或类似的,尽管它们对内容很重要.棘手的是,HTML包含需要在视频完成时运行的Javascript.
我们的第一个想法是使用像Jwplayer这样的Flash视频包装解决方案.当文件托管在Web服务器上时,这可以正常工作.但是,由于Flash的安全策略,本地(例如"file://foo.js")Javascript代码无法接收来自Flash对象的回调.此外,当本地Web文件包含Flash等ActiveX对象时,Internet Explorer用户会收到令人讨厌的安全警告(因为它们应该很好!).
想法?
理想情况下,我们希望尽可能跨浏览器和跨平台,而无需用户安装任何东西.但我们不能保证他们能够或不愿意使用安全设置,我们无法保证他们也会拥有支持HTML5视频的浏览器.
似乎默认的行业方式是简单地将内容打包成独立的Flash Player可执行文件.想知道是否可以这样做,最好是用网络标准.
虽然桌面版不支持视频,但Titanium Appcelerator桌面将接近完美!
我已经遵循环回脱机同步示例并使用嵌入式文档创建自己的模型.我创建了一个名为Project的Model,其中ProjectMembers是嵌入式模型.这是我的模型:
Project.json
{
"name": "Project",
"base": "PersistedModel",
"strict": "throw",
"persistUndefinedAsNull": true,
"trackChanges": true,
"properties": {
...
},
"relations": {
"members": {
"type": "embedsMany",
"model": "ProjectMember",
"property": "members",
"options": {
"validate": true,
"forceId": false
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
ProjectMember.json
{
"name": "ProjectMember",
"base": "Model",
"idInjection": true,
"properties": {
...
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
Run Code Online (Sandbox Code Playgroud)
在服务器端model-config.json中我更新了数据源,如下所示:
"Project": {
"dataSource": "my_db"
},
"ProjectMember": {
"dataSource": "transient"
}
Run Code Online (Sandbox Code Playgroud)
在lbclient/models /的客户端,我添加了2个文件local-project.json和remote-project.json,与local-todo.json和remote-todo.json完全相同.我更新了客户端model-config.json文件,如下所示:
"RemoteProject": {
"dataSource": "remote"
},
"LocalProject": { …Run Code Online (Sandbox Code Playgroud) 我在缓存存储中存储视频时遇到问题.如果视频尺寸较小,它可以正常工作,但如果它的大小约为100MB,我会收到此错误:
DOMException: Entry was not found.
我使用以下代码:
fetch(videoUrl).then(function(res) {
var responseToCache = res.clone();
caches.open('videos').then(function(cache) {
var request = new Request('https://example.com/video.mp4');
cache.put(request, responseToCache).catch(function(err) {
console.log(err); //this is where the error is thrown
});
});
});
Run Code Online (Sandbox Code Playgroud)
我可以存储多个总大小> = 100 MB的小文件.
我想这是Chrome浏览器的限制,但我在Internet上找不到任何引用.
有没有办法避免这种限制?
编辑:
我可以存储的最大视频大小是64MB.如果大小超过该大小,则会发生错误.
编辑2:
该错误仅在Chrome中出现.Firefox没有这样的限制.我在Firefox中尝试了大小> = 350MB的视频和OK.
有没有办法使用HTML和JavaScript完全脱机显示给定区域的地图?我正在寻找适合移动设备(阅读Cordova的解决方案).
是否可以将整个文件夹添加到HTML5缓存清单文件中?我无法单独列出文件夹中的所有文件,因为此文件夹中的文件将动态更改(它是图像的文件夹).
Android 4.1包括离线语音输入.当您单击弹出键盘上的麦克风时,您可以看到此信息,如果您没有网络连接,它仍然有效.但是,RecognizerIntent当您想要从应用程序进行语音识别时,API 似乎仍然需要网络连接.
是否有用于从我的应用访问Android中新的离线语音输入功能的API?
我想通过缓存清单在没有连接到流星服务器(离线)的情况下加载Meteor(meteor.com)应用程序.
我认为这里已经提出了类似的问题: 如何向Meteor应用添加缓存清单? 但我无法遵循他们的解决方案(更多内容见下文).
有没有一种简单的方法可以在Meteor应用程序中包含缓存清单,并使用所有流星资产填充清单?
从相关帖子我的问题是:
您可以通过挂钩到bundle.css和bundle.js.client来获取css和js文件的完整列表
"挂钩"这些文件涉及什么?我该怎么办?
buffer.files.client_cacheable ['manifest.appcache'] = new Buffer(manifestcontent);
这是做什么的,它应该去哪里?
然后你可以编辑/app/lib/app.html.in来添加引用
这只是manifest="/application.manifest"html标签中的一点吗?
我正在考虑使用服务工作人员使我的应用程序脱机.我已经通过缓存资源获得了令人满意的结果,但我还必须检查是否已连接到互联网,如果没有 - 存储请求,并将其推送到同步.
我明白,未来的onsync将有助于此,但我需要 - 甚至是临时的 - 解决方案.
我曾尝试将请求存储在worker中的数组中,但它不是持久的 - 在计算机重启后不起作用(当SW工作并提供脱机内容时).
什么是好方向 - 以某种方式将其存储在缓存中?或者使用IndexedDB/SimpleDB(在ServiceWorker中访问indexedDB.竞争条件)?
根据我的理解,离线第一个应用程序需要一种方法来判断用户是否已连接; 如果没有,它会在本地存储更改并在线时与远程服务器同步.
我发现使用Web应用程序执行此操作的方法是在客户端上使用pouchdb与连接到couchdb数据库的api进行通信.或者使用Firebase.
是否可以使用React-Native具有类似的功能?也许通过使用pouchdb-async-storage适配器.还有其他替代方案可用于本地远程数据同步吗?
offline ×10
javascript ×4
html ×3
html5 ×2
node.js ×2
android ×1
cordova ×1
couchdb ×1
download ×1
flash ×1
iphone ×1
leaflet ×1
loopbackjs ×1
maps ×1
meteor ×1
pouchdb ×1
react-native ×1
strongloop ×1
tiles ×1
video ×1