2010-05-07 6 views
42

Возможно ли создать приложение внутри в браузере? Приложение означает:Возможно использование автономного режима в браузере (HTML5)?

1 Где есть соединение (онлайн режим) между браузером и удаленным сервером приложений:

  • приложение работает в традиционном режиме веб-
  • приложение сохраняет необходимо данные в автономном хранилище, которые будут использоваться в автономном режиме (2)
  • данные синхронизации/передачи данных приложения (снятые в автономном режиме) обратно на сервер, когда он возобновляется из автономного режима обратно в онлайн-режим

2 Там, где есть нет подключения (автономный режим) между браузером и удаленным сервером приложений: (? JavaScript)

  • приложение будет по-прежнему работать
  • приложение будет представлять данные (который хранится в автономном режиме) пользователю
  • приложение может принимать ввод от пользователя (и хранить/добавлять в автономном хранилище)

Возможно ли это? Если ответ - это да, существует ли какая-либо (Ruby/Python/PHP) структура?

Thanks

+3

Следующий вопрос: существуют ли какие-либо существующие рамки Javascript, которые делают все это проще для реализации? – Chetan

ответ

38

Да, это возможно.

  • Вам необходимо написать заявление в JavaScript, и обнаружить ли как-то браузер находится в автономном режиме (проще всего опрашивать сервер один раз в то время). (Изменить: см. Комментарии для лучшего способа обнаружения автономного режима)

  • Убедитесь, что ваше приложение состоит только из статических файлов HTML, Js и CSS (или задайте политику кэширования вручную в своем скрипте, чтобы ваш браузер помнил их в автономном режиме). Обновление страницы выполняется с помощью манипулирования DOM JS, а не через сервер (рамки, такие как ExtJS http://www.extjs.com помогут вам здесь)

  • Для хранения используйте модуль, такие как PersistJS (http://github.com/jeremydurham/persist-js), которая использует локальное хранилище браузера для отслеживания данных. Когда соединение восстанавливается, синхронизируйтесь с сервером.

  • Вам необходимо предварительно кэшировать изображения и другие используемые активы, иначе они будут недоступны в автономном режиме, если вы их раньше не использовали.

  • Опять же: основная часть вашего приложения должна быть в javascript, инфраструктура PHP/Ruby/Python поможет вам немного, если сервер недоступен. Возможно, сервер хранится как можно проще, REST-подобный API AJAX для хранения и загрузки данных.

+11

вы можете использовать navigator.onLine, чтобы проверить, включен ли браузер –

+5

navigator.onLine не дает точного значения во многих браузерах. Например, http://code.google.com/p/chromium/issues/detail?id=7469. – kpozin

+1

@kpozin проблема в WebKit была исправлена, поэтому теперь все основные браузеры поддерживают ее –

-1

Посмотрите на Google Gears, http://code.google.com/apis/gears/. Хотя они были отменены в пользу HTML5. Тем не менее, похоже, что то, что толкуется как HTML5, - это Google Gears.

0

Я тоже искал это, я узнал об abt HTML5 Offline Web Apps. havent попробовал это tho

Пользователи типичных онлайн-приложений могут использовать приложения только в том случае, если у них есть подключение к Интернету. Когда они выходят в автономный режим, они больше не могут проверять свое электронное письмо, просматривать свои календарные встречи или готовить презентации с помощью своих онлайн-инструментов. Между тем, собственные приложения предоставляют эти функции: локальные папки кэшей почтовых клиентов локально, календари хранят свои события локально, пакеты презентаций хранят свои файлы данных локально.

15

"Let's Take This Offline" chapter в Марк Пилгрим (онлайн) книги Dive Into HTML5 очень хороший обзор написания автономных веб-приложений с использованием технологий HTML5.

Примечание: Поскольку оригинальное погружение Марка Пилигрима в ссылку HTML5, похоже, не работает.

Теперь можно найти копии here среди других мест.

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.css и offline.css. Давайте сделаем так, чтобы они были кешированы и доступны нашим пользователям, когда они находятся в автономном режиме.

+0

Недостаток/функция: он работает только по https .. – Kamal

+0

Это не ошибка, это особенность. – Rob