2010-05-07 53 views
42

是否有可能建立在里面浏览器应用?一个应用程序是指:脱机模式下的应用程序可能吗?

1哪里有连接浏览器和一个远程应用服务器之间(在线模式):

  • 应用程序中典型的基于网络的模式运行
  • 应用商店在脱机存储,必要数据在离线模式下使用(2)
  • 应用同步/推数据(在离线模式中捕获)回服务器当从离线模式恢复回联机模式

2哪里有浏览器和一个远程应用服务器之间没有连接(离线模式):(?的javascript)

  • 应用程序将仍然运行
  • 应用程序将呈现数据(离线存储)给用户
  • 应用程序可以接受来自用户的输入(并存储/附加到离线存储中)

这可能吗?如果答案是肯定的,是否有任何(Ruby/Python/PHP)框架正在构建?

谢谢

+3

后续问题:是否有任何现有的JavaScript框架,使这一切都很容易实现? – Chetan 2011-04-18 23:35:42

回答

38

是的,那是可能的。

  • 您需要使用Javascript编写应用程序,并以某种方式检测浏览器是否处于离线模式(最简单的是轮询一次服务器)。 (编辑:查看评论以更好地检测离线模式)

  • 确保您的应用程序仅包含静态HTML,Js和CSS文件(或者在脚本中手动设置缓存策略,以便您的浏览器记住他们在离线模式下)。更新页面通过JS DOM操作完成,而不是通过服务器(如ExtJS的http://www.extjs.com一个框架将帮助你在这里)

  • 对于存储,使用一个模块,如PersistJS(http://github.com/jeremydurham/persist-js),它使用本地存储的浏览器来跟踪数据。连接恢复时,与服务器同步。

  • 你需要预先缓存图像,并使用其他资产,otherwse他们将在离线模式下无法使用,如果你之前没有使用它们。

  • 还是那句话:你的应用程序的大部分需要在JavaScript中,一个PHP /拼音/ Python框架将帮助你一点,如果服务器无法访问。服务器可能保持尽可能简单,一个类似REST的AJAX API来存储和加载数据。

+11

您可以使用navigator.onLine来测试浏览器是否在线 – 2010-05-07 08:51:16

+5

navigator.onLine在许多浏览器中没有提供准确的值。例如,请参阅http://code.google.com/p/chromium/issues/detail?id=7469。 – kpozin 2011-01-04 22:39:37

+1

@ kpozin WebKit中的问题已修复,所以现在所有主流浏览器都支持Firefox – 2012-02-16 17:38:49

0

我也在寻找这个,我发现了abt HTML5 Offline Web Apps。没有尝试过它

典型的在线Web应用程序的用户只能够使用应用程序,而他们有一个连接到互联网。当他们离线时,他们不能再检查他们的电子邮件,浏览他们的日历约会,或者使用他们的在线工具准备演示文稿。同时,本机应用程序提供以下功能:电子邮件客户端在本地缓存文件夹,日历将其事件存储在本地,演示文稿包在本地存储其数据文件。

0

的Javascript给你的网站离线模式的选项,并呼吁UpUp Javascript Framework。 一个小脚本,确保您的网站始终在您的用户身边,即使他们在飞机上或20,000海里以下的联赛中。

<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>Lonely Globe Advisor</title> 
</head> 
<body> 
    <h1>Top Hotels in Rome</h1> 
    <ol> 
    <li>Villa Domus - Via Piacenza 9, Rome, Italy</li> 
    <li>Hotel Trivelli - Piazza Barberini 11, Rome, Italy</li> 
    </ol> 
    <script src="/upup.min.js"></script> 
    <script> 
    UpUp.start({ 
     'content-url': 'offline.html', 
     'assets': ['css/bootstrap.min.css', 'css/offline.css'] 
    }); 
    </script> 
</body> 
</html> 

现在我们的用户看到,当他们处于脱机状态的内容,是offline.html内容。这只是一个简单的HTML文件,与我们网站上的任何其他页面没有什么不同。

我们offline.html文件包含两个CSS文件:bootstrap.min.cssoffline.css。让我们确保这些缓存,并提供给我们的用户,当他们离线

+0

缺点/特点:它只能通过https .. – Kamal 2016-11-30 10:43:00

+0

工作,这不是一个错误,它是一个功能。 – Rob 2018-02-22 16:49:47

相关问题