Я использую Local Storage для передачи значений между страницами, чтобы создать прокрутку для эффекта (ссылка на клики пользователя и прокручивается до определенной части страницы на основе ID)
Ранее я использовал файлы cookie, но, похоже, не работал на Android, я читал, что локальное хранилище поддерживается так, что переключается на него. Он отлично работает в браузере, но как только он упакован как родное приложение, я теряю всю функциональность? API заявляет, что он должен поддерживаться, любые идеи?
Вот мой код:
Базовый URL:
var storage = window.localStorage; $("a.scroll_link").click(function(event) { event.preventDefault(); var value = $(this).attr("id"); storage.setItem("key",value); console.log(value); window.location=$(this).attr("href"); });
Получающий URL:
$(function () { var value = window.localStorage.getItem("key"); if (value != "" && value != "undefined" && value != null) { var storage = window.localStorage; storage.setItem("key",value); var scroll_type = ""; if ($.browser.webkit) { scroll_type = "body"; } else { scroll_type = "html"; } $(scroll_type) .stop() .animate({ //get top-position of target-element and set it as scroll target scrollTop: ($("#" + value).offset().top - 25) //scrolldelay: 1.5 seconds }, { duration: 1500, complete: function () { storage.removeItem("key"); }, }); } });
Код отлично работает в браузере, а не изначально, какие-то идеи?
Благодаря,
Используйте document.addEventListener ("deviceready", onDeviceReady, false) вместо $ (function () {…}
http://docs.phonegap.com/en/2.5.0/cordova_events_events.md.html#deviceready
1.Glad, чтобы знать, что вы решаете свою первую проблему. Как говорит gmh04, я думаю, вы должны заменить событие init на «deviceready», которое запускается при запуске приложения.
2. Вы имеете в виду window.localStorage.getItem («ключ»), возвращающий значение null в получающем URL? Я точно не сталкиваюсь с проблемой, как то, что вы описываете. Тем не менее, вы можете попытаться переместить свой код при получении URL-адреса на той же странице базового URL-адреса. Я пробовал на время и очень уверен, что localStorage будет работать на одной странице.
Я хотел бы добавить, что в версии 2.6.0 версии cordova.js есть ошибка, из-за которой localStorage не работает на Android:
https://issues.apache.org/jira/browse/CB-3063
В версии 2.5.0 он отлично работает, и он уже исправил 2.7.0 rc.