【问题标题】:BlackBerry webworks weird behavior with JavaScriptBlackBerry webworks 使用 JavaScript 的奇怪行为
【发布时间】:2011-04-13 22:50:41
【问题描述】:

我是 BlackBerry 开发新手,已经开发 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最后一个SDK,我可以尝试使用OS5和OS6系列的模拟器。

现在,有了 OS6 模拟器,一切都很好。 JavaScript 函数被正确调用。

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

我做错了什么?

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢你,安德鲁,你很友善!尽管您的回答非常重要并且应该在他们的文档中更好地指出,但我真的不使用 HTML5(我的意思是,在这个示例中是的,但实际上我可以在这些函数中编写所有内容)。问题是它们根本没有被调用。
    • 所以你试过了,但没有成功? 我的猜测是 localStorage 不存在,所以函数调用在它试图访问一个没有不存在。尝试将您的函数更改为像function saveMe() { alert("Save Menu Item Chosen");} 这样简单的函数,以确保实际调用了菜单项函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多