黑莓webworks与javascript的奇怪行为

时间:2011-04-13 22:50:41

标签: html5 blackberry menu blackberry-webworks blackberry-os6

我是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>

安装了WebWorks last SDK后,我可以尝试使用OS5和OS6系列的模拟器。

现在,使用OS6模拟器一切都很好。正确调用Javascript函数。

使用OS5模拟器显示菜单项,但是一旦我点击它们,就没有任何反应。我也尝试使用简单的警报,而不是在localStorage中保存和加载数据,但单击菜单项后根本不调用函数。

任何人都知道我做错了什么?

我知道在同一个应用程序中声明blackberry.ui.dialogblackberry.ui.menu时存在一个已知问题,但我只是声明blackberry.ui.menu

1 个答案:

答案 0 :(得分:1)

我注意到在这两个被调用的函数中,您正在尝试访问localStorage。在OS5上,不支持常规HTML5 localStorage,仅支持Google Gears方法。你在项目中使用html5_init.js吗? Follow these instructions添加它。对于OS5,它是适用于HTML5“转换器”的Google Gears。

这可能不是你的问题,但如果你正在编写一个适用于这两个版本操作系统的Webworks应用程序,那么无论如何你都需要它。