问题标签 [offline-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2785 浏览

android - OSMdroid:如何从本地 zip 存档中渲染离线地图

我正在为我的自定义地图应用程序使用 osmdroid 库,我的最后一个问题与以易于共享的通用格式准备的离线内容的可访问性有关。

具体来说,我现在可以使用Tile Packager从我的自定义数据源正确下载 .png 切片,并将它们直接压缩到 SD 卡上的 .zip 存档中,但我无法在我的 MapView 中呈现它们。有人可以发布一些示例来解释如何在离线模式下没有连接的情况下直接从 zip 存档加载图块吗?

我已经检查了OSMdroid 帖子:如何从 zip 存档加载离线地图 - MapTileFileArchiveProvider,但没有提供示例。

0 投票
1 回答
1681 浏览

android - 如何将 NoSQL 数据库嵌入我的浏览器以获得离线体验?

我想要一个面向文档的数据库,它具有 MongoDB 中的查找、插入、修改和其他功能,可供我的浏览器使用(实际上,iOS 上的 Safari 和 Android 上的 Chrome 就足够了)。我们确实有 SQLLite,但它是关系型的。只要支持典型操作,我什至可以在任何现有存储机制之上获得一个包装器。

我经历过:

但这些并不像我正在寻找的那样封闭。我只是想知道是否有更好的解决方案可用?

0 投票
1 回答
699 浏览

iphone - 在 iOS 和全屏应用程序模式下使用离线应用程序缓存,它会在 Safari 中打开其他页面而不是应用程序

我正在用 HTML5 构建一个离线平板电脑/手机应用程序,以在没有手机信号塔的地方远程收集数据。它使用离线应用程序缓存清单将页面保存到浏览器中。我试图让它在 Safari 和 Android 中工作。

目前我的网站有多个单独的网页(index.html、load.html 和 sync.html)。我希望能够在每个页面加载后加载每个页面并运行不同的 javascript。

最初我有一个主索引页面(它充当应用程序的引导程序),并在单击菜单按钮时使用 jQuery 的 .load() 函数将不同的页面文件(仅 html 片段)加载到主显示 div 中。这在 iPhone 上运行得很好。但是,当在 Android 上尝试它并且站点已经被缓存并且设备处于飞行模式,因此它无法连接到服务器时,由于某种原因,该页面将无法从外部页面加载 HTML,所以我会得到一个空白屏幕。从缓存加载页面时,我将其缩小到 jQuery 的 .load() 函数在 Android 中失败。

因此,我尝试将各个页面分开,并在每个页面上镜像所有 HTML、JavaScript、CSS 包含和标头代码(效率不高)。所以每个页面都可以独立运行。当按照简单的 href 链接加载其他页面时,这在网络浏览器中的 Android 和 iPhone 中运行良好。但是,当我在 iPhone 上进入应用程序模式时(即,您将网页保存到主屏幕,使其显示为实际的应用程序图标,然后您从那里运行它,除了状态栏外,它几乎全屏显示)然后单击菜单图标加载 sync.html 例如,它会在 Safari 中打开页面,而不是停留在全屏“应用”模式中。

有没有办法打开应该在 iPhone 上的全屏“应用”模式下缓存的单独网页?我不希望其他页面加载 Safari,因为屏幕尺寸较小。

我能想到的唯一其他方法是将所有 html 片段隐藏在主索引页面上的 div 中,然后根据单击的菜单按钮显示和隐藏 div。这可能看起来更干净,更快,但只是想知道是否有更好的方法来做到这一点?

0 投票
3 回答
5648 浏览

android - 在android中显示缓存的webview版本

我正在尝试让网站的 HTML5 离线缓存版本在网络在 web 视图内关闭时显示。

我已经覆盖onReceivedError了 ok,当网络关闭时,这个方法被调用。问题是它显示通用的“网页不可用”消息。

如何让它显示页面的 HTML5 缓存版本?webapp 的离线存储肯定可以正常工作,因为它在 Firefox 和 Chrome 的桌面版本中运行良好。

我知道我可以loadData手动调用视图onReceivedError,但我不确定我可以从哪里获取 HTML5 缓存值。

注意:如果我设置了一些虚拟数据,loadData然后view.loadData(Uri.encode("<html><div>Page load failed</div></html>"), "text/html", "UTF-8");单击返回(通过检测返回事件并调用webview.goBack();,则页面的缓存版本显示正常。

这是我为设置 webview 添加的一些代码行:

0 投票
2 回答
321 浏览

silverlight - 使用独立存储在应用程序中提供模块的离线模式

我正在开发一个允许用户提交某种请求的应用程序。该应用程序分为几个 Silverlight 应用程序,其中之一是用于提交请求的应用程序。我正在考虑为请求模块提供浏览器外支持,该模块可以在离线模式下运行。因此,用户创建请求,将其保存到隔离存储中,最后当 Internet 恢复时,请求将提交到 SQL Server 数据库。

所以无论如何,我有几个问题可以帮助我决定我应该做什么并继续进行 POC ......

  1. 我的主应用程序能够从请求模块的隔离存储中读取吗?
  2. 有关http://siaqodb.com/的任何反馈?你建议使用这个数据库引擎还是我应该坚持使用 XML 文件?
0 投票
1 回答
2868 浏览

html - HTML 5 缓存清单是否也适用于 ajax 请求?

我正在尝试让 HTML 5 离线应用程序缓存与 ASP MVC 3 网站一起使用。我遇到的问题是,当我尝试在脱机模式下导航到页面时,它不起作用。

我正在对清单文件使用一个操作,以便可以动态生成它,并在视图中指定 Resonse.ContentType = "text/cache-manifest"。

我已经在 IIS 中本地托管了应用程序,所以我使用http://192.168.55.127/mywebsite/来访问它。

这是我正在使用的清单视图。它使用剃刀视图引擎,并且在我试图找出问题所在时有点混乱(硬编码的 URL 等)。

这会产生如下路径:

这似乎很好。

我也使用完整路径引用了清单文件:

这似乎没问题,因为当我在 chrome 中加载网站并观察开发人员控制台时,它似乎缓存了所有文件而不会引发任何错误。此外,如果我导航到http://192.168.55.127/mywebsite/manifest ,它会提供我希望看到的清单。

该网站不使用普通导航,而是使用哈希片段进行导航 - 因此导航到主页的 url 将是 master.htm#home 或者对于选项它将是 master.html#options。此哈希更改由 javascript 获取,并使用 ajax 将页面加载到主服务器中的 div 容器中,更具体地说,它使用 jQuery 中的“加载”方法来执行此操作。

这一切在不处于离线模式时工作正常,并且在导航时观察 chrome 中的网络选项卡时,请求 URL 是正确的,并且与清单文件中列出的 URL 相同。我唯一能想到的是离线模式不适用于ajax请求,但我的印象是它的工作原理相同。

我正在使用 FireFox(9.0 版)测试离线模式,方法是清除所有历史记录、浏览网站主页、启用离线模式,然后尝试导航到选项页面。在萤火虫中,我看到选项页面的正确 URL 的 GET 请求,但它永远不会返回,甚至不会出错。加载轮(在 firebug 的 net 选项卡中的请求旁边)一直在转动,就好像它仍在加载一样。我也在 Opera 11.60 中尝试过(因为它也有离线模式)并且发生了同样的事情。

有人对我做错了什么有任何想法吗?我是否遗漏了一些明显的东西或误解了清单应该如何工作?任何建议将不胜感激。

0 投票
1 回答
333 浏览

html - HTML5 offline strange behaviour

I am having a problem with a web app that I'm working on and I have posted a question here which is a bit vague and probably not very helpful. I have decided to create a really basic site and build it up to be like the main app and see where it breaks. I have done this and got stuck straight away with the offline caching.

This is a basic 3 page static website hosted locally in IIS 7.5. I created the folder c:\inetpub\wwwroot\ManifestTesting, added it to IIS as a web application and added a new MIME type of text/cache-manifest for the .appcache extension. I am also using FireFox 9.0 for testing as this has an offline mode feature.

I created 3 html pages and added them to the ManifestTesting folder:

  • index.htm - this page contains 2 links to page1.htm and page2.htm
  • page1.htm - just contains a header that says page 1
  • page2.htm - just contains a header that says page 2

So now if I browse to http://localhost/manifesttesting if get the index page and can navigate to the 2 pages.

I then created a file called manifest.appcache and added it to the ManifestTesting folder:

and added the reference to the manifest file in the index.htm:

So if I clear all history and browse to the index.htm, FireFox asks if I want to allow the website to store data for offline use. I click allow, switch the browser to offline mode then attempt to navigate to page1.htm which works fine! So all is good so far.

Now for the bit that I don't understand. I then created a new folder in the ManifestTesting folder called 'pages' and moved page1 and page2 into it. I updated the links in the index to reference the new location and if I browse the website without the manifest reference, it all works fine just as before. I then re-reference the manifest file in the index and update the manifest to be like:

I then clear history, refresh, firefox asks to allow the website to store offline data, enable offline mode and then attempt to navigate to page1 - it doesn't work! FireFox tells me it's in offline mode and can't browse the web!

What am I doing wrong?

0 投票
1 回答
153 浏览

html - 启用html5离线存储时加一按钮未加载

我在 head 标签的顶部添加了以下加一个脚本

然后用下面的代码在页面中添加一个按钮

在正常情况下,一切正常。但是当我使用以下内容启用离线存储时:

加号按钮未加载(第一次除外)。检查控制台时显示:无法加载资源http://apis.google.com/js/plusone.js

我尝试在离线缓存清单的 NETWORK 部分添加以下内容:

0 投票
3 回答
2342 浏览

php - 在本地运行 Apache 开发/测试服务器

有什么方法可以将 Apache 设置为在本地运行,特别是不连接到 Internet,以便它可以通过 LAN 提供动态内容 (PHP)?

我正在尝试在我的 Windows XP SP3 机器上设置一个开发环境,并获得一些构建 Web PHP 驱动的 Web 应用程序的经验。我有 Rogers 住宅服务,在该连接上运行服务器是违反 TOS 的。

0 投票
3 回答
2853 浏览

java - 第一个 Maven 构建可以离线吗?

问题:你有一个压缩的 java 项目分布,它依赖于几个库,如 spring-core、spring-context、jacskon、testng 和 slf4j。任务是使事物可以离线构建。可以使用所有必需的库 jar 创建项目范围的本地存储库。

我试过这样做。看起来即使项目包含 javac 和运行时所需的 jar,构建仍然需要互联网访问。Maven 仍会潜入网络以获取构建所需的大部分自己的插件。我假设 maven 使用空的 .m2 目录运行(因为这可能是构建的第一次启动,可能是离线构建)。不,我不同意沿项目本身分发完整的 maven repo 快照,因为这对我来说看起来一团糟。

一点背景知识:更广泛的任务是创建 Windows 便携式风格的 JDK/IntelliJ Idea 分发,该分发与项目一起使用,并允许在 IDE 中进行一些最少的 Java 编码/运行,具有最少的配置和最少的 Internet 访问。该项目针对计算机班的学生,他们很少或根本无法控制系统配置。在离线模式下保持控制台构建系统完整是可取的,但我猜 maven 过度依赖网络,所以我不得不放弃它,转而使用好的老蚂蚁。

那么,您的意见是,我们能否将第一个 maven 构建完全移至离线模式?我的直觉是,最初的 maven 发行版只包含从主仓库中拉出必要插件所需的最低限度,并且如果没有至少一次看到主仓库,它就不能完全发挥作用。