Странное поведение BlackBerry Webworks с JavaScript

Я новичок в разработке BB, разрабатывая приложения для iPhone в течение многих лет.

То, что я пытаюсь сделать, - это простое меню, подобное следующему, вызываемое onLoad:

function initMenus() {
  var item = new blackberry.ui.menu.MenuItem(false, 1, "Save", saveMe);
  var item2 = new blackberry.ui.menu.MenuItem(false, 2, "Load", loadMe);
  blackberry.ui.menu.addMenuItem(item);
  blackberry.ui.menu.addMenuItem(item2);
}

function saveMe()
{
  localStorage.pixels = window.pageYOffset;
}

function loadMe()
{
  window.scrollTo(0, localStorage.pixels);
}

В файле конфигурации у меня есть:

<?xml version="1.0" encoding="utf-8"?>
<widget xmlns:rim="http://www.blackberry.com/ns/widgets" version="1.0.0" rim:header="RIM-Widget:rim/widget" xmlns="http://www.w3.org/ns/widgets">
  <name>007</name>
  <description>Sample Application created using the BlackBerry Widget SDK that demonstrates how to use the Menu and MenuItem objects found within the Widget API collection.</description>
  <author href="http://na.blackberry.com/eng/developers/browserdev/widgetsdk.jsp" rim:copyright="2010" email="astanley@rim.com">Adam Stanley</author>
  <content src="index.html" />
  <feature id="blackberry.ui.menu" required="true" version="1.0.0.0" />
  <rim:loadingScreen backgroundColor="#c0c0c0" />
  <license href="" />
</widget>

Установив последний SDK WebWorks, я могу попробовать эмуляторы семейств OS5 и OS6.

Теперь с симуляторами OS6 все хорошо. Функции Javascript вызываются правильно.

С симуляторами OS5 пункты меню показываются, но как только я нажимаю на них, просто ничего не происходит. Я пытался также с простыми предупреждениями, а не сохранять и загружать данные в localStorage, но функции просто не вызывались после нажатия пунктов меню.

Кто-нибудь знает, что я делаю не так?

Я знаю, что существует известная проблема при объявлении blackberry.ui.dialog а также blackberry.ui.menu в том же приложении, но я просто заявляю blackberry.ui.menu,

1 ответ

Решение

Я заметил, что в обеих вызванных функциях вы пытаетесь получить доступ к localStorage. В OS5 обычное локальное хранилище HTML5 не поддерживается, только методы Google Gears. Используете ли вы html5_init.js в вашем проекте? Следуйте этим инструкциям, чтобы добавить его. Это Google Gears для HTML5 "конвертер" для OS5.

Это может не быть вашей проблемой, но она вам все равно понадобится, если вы пишете приложение для Webworks, которое будет работать на обеих версиях ОС.

Другие вопросы по тегам