11
2010.01.11Sopheus Собственно сабж.
Интернет не всегда под рукой, поэтому можно было бы сделать какую-нибудь простую софтину, в буфер которой можно было бы забивать новые статьи, а после посредством интернета(когда он доступен) она бы отправляла новые статьи на сайт.
...

Теперь спустя 15лет такой оффлайн блокнот можно сделать прямо на сайте, с помощью serviceworker 56
ЛС Ответить
12
...немного нужно раскрыть тему.
Например участник ехал в поезде и напечатал хорошую статью, для этого он использовал форму на сайте с её удобными кнопками вставки тегов dsl разметки:
[attachment=17217]

потом нажимает кнопку "добавить", но не заметил как поезд въехал в тоннель и на экране появляется:
[attachment=17218]

чтобы не потерять сделанную работу нельзя покидать эту страницу, но участник этого не знал и сильно расстроился. Ладно, допустим он остался на этой странице, поезд выехал из тоннеля, прошол ещё часок, участник нажал кнопку "обновить страницу" и увидел:
[attachment=17219]

...какую ещё...вирус, мошенники!?)

Тоннель, подземка, просроченный платёж за связь,.. таких потенциальных ситуаций достаточно много, и наверняка случаются.

Есть несколько путей решения, от простейшего буфера в localstorage, до навороченного оффлайн блокнота на serviceworker и indexeddb.

бкрс, хотя-бы проверка онлайна при нажатии на кнопки (добавить, править, отправить,..), перед попыткой отправить форму, явно не помешает.

Код:
if (navigator.onLine) {
console.log("online");
} else {
console.log("offline");
}
ЛС Ответить
13
dsx, считаю, что это задача браузера и пользователя заботится о том, что будет, если пропадёт интернет, а не сайта.

Если отправить форму, когда нет интернета, то можно нажать назад и всё должно вернуться.

Сомневаюсь в "достаточно много", может лет 20 назад. Гораздо актуальней "случайно закрыл вкладку/браузер", там уже назад не вернёшь.


Запись в localstorage интересна, но там совсем "не простейшая". Нужна хорошая такая система, чтобы был польза. На форуме кстати, такая система есть, но она отключена, т.к. она не моя, тяжело её развивать, а там не всё по уму.


За наводку спасибо, подумаю и посмотрю как там. Не исключено, что идея может прижиться, я с ходу не соображу как оно вообще может выглядеть, сохранить-то не сложно, а вот вернуть что нужно, куда нужно и когда нужно это целая история.
ЛС Ответить
14
бкрс, повесить на поля правок callback - onchange, чтоб при любом изменении сохранять черновик в том же localstorage в виде json, и просто завести новую колонку в шапке - "черновики", где этот json бы разворачивался. При успешной отправки формы draft удаляется. Вот и все.
ЛС Ответить
15
Почемучка При успешной отправки формы draft удаляется.

Каким образом можно узнать о успешной отправке формы?

Скрытые идентификаторы и перенаправления придётся вводить, не очень естественно.

Цитата:Вот и все.

Ах эти just-cоветы. В реальности это куча работы, несколько недель возни без учёта вечной поддержки. И это без основного вопроса "нужно ли", т.к. с большой вероятностью это повисит год другой, и потом придётся сносить.

У меня от одной мысли о странице сохранённых версий глаза закатываются. Разные слова, разные версии, проверка последних правок. Накрылся интернет, ты включил мобилку, заново там исправил, потом вернулся на ноут, оно тебе настойчиво возвращает старый вариант для новой правки. Начал делать два варианта или добавлять разные слова в разных вкладках, как сохранять. Ужас.

Т.е., если делать по уму, то это полноценная тяжёлая система черновиков. И там уже имеет смысл в бд это делать, а не в браузере, совсем не оффлайн.
ЛС Ответить
16
бкрс Накрылся интернет, ты включил мобилку, заново там исправил, потом вернулся на ноут, оно тебе настойчиво возвращает старый вариант для новой правки. Начал делать два варианта или добавлять разные слова в разных вкладках, как сохранять. Ужас.

Т.е., если делать по уму, то это полноценная тяжёлая система черновиков. И там уже имеет смысл в бд это делать, а не в браузере, совсем не оффлайн.

Это лишнее. Соглашусь что сложные варианты исполнения дают лишнюю нагрузку на организм, поэтому можно и нужно упрощать, при нажатии кнопки:
проверка онлайна -> если оффлайн, то выводим сообщение типа alertа("нет подключения к сети") и мы остаёмся на текущей странице, ожидаем онлайна

При стандартной обработке отправки формы в оффлайне, не все браузеры позволяют вернуться обратно на страницу при нажатии "назад", а только выдают непонятную "повторную отправку формы". Почти всегда если нажать "назад" будет переход на предыдущую страницу, потеря работы почти гарантирована.
ЛС Ответить
17
бкрс Каким образом можно узнать о успешной отправке формы?

Отправить post-request через js вместо html'ного form. На backend'е ничего менять не придется.

бкрс Ах эти just-cоветы. В реальности это куча работы, несколько недель возни без учёта вечной поддержки. И это без основного вопроса "нужно ли", т.к. с большой вероятностью это повисит год другой, и потом придётся сносить.

У меня от одной мысли о странице сохранённых версий глаза закатываются. Разные слова, разные версии, проверка последних правок. Накрылся интернет, ты включил мобилку, заново там исправил, потом вернулся на ноут, оно тебе настойчиво возвращает старый вариант для новой правки. Начал делать два варианта или добавлять разные слова в разных вкладках, как сохранять. Ужас.

Т.е., если делать по уму, то это полноценная тяжёлая система черновиков. И там уже имеет смысл в бд это делать, а не в браузере, совсем не оффлайн.

1) При загрузке черновика из списка запросить текущую версию словарной статьи.
При двух вариантах просто подгрузить предыдущее сохранение черновика.

2) Сверить время/даты

3) Предупредить человека, предложить удалить или продолжить правку без последующего сохранения.

Для такой системы сложная логика и ни к чему. Черновик есть черновик, ему не место в бд
ЛС Ответить
18
dsx, даже очень простой черновик создаст кучу неожиданных проблем. Написал что-то не отправленное, оно сохранилсь, хорошо. Написал ещё что-то, оно всё стёрлось. Чтобы это обойти нужно какие-то блоки ставить "у вас есть сохранённая версия", и тут скорее отпугнёт писать вообще.


Проверка на онлайн наверное стоит, если navigator.onLine работает, хотя и отключение интернета это оочень узкий случай.

Интересно примеры на каких-нибудь сайтах.
ЛС Ответить
19
Почемучка Отправить post-request через js вместо html'ного form. На backend'е ничего менять не придется.

А на пердях придётся и много, всё очень просто, как всегда.

Я веб-апы не жалую, хотя тут разницы нет как форму отправлять.

По простоте вы ошибаетесь, я вам гарантирую, что даже хороший прогер или засядет надолго или что-то выжмет некому не нужное. Черновик это глобальная система.
Ну или пример давайте, где простой черновик на localstorage основан.
ЛС Ответить