2011-04-13 97 views
1

我是BB开发新手,开发iPhone应用多年。黑莓webworks与javascript的怪异行为

我所试图做的是类似下面的简单的菜单,调用的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="[email protected]">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

回答

1

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

这可能不是你的问题,但如果你正在编写一个可以在两个版本的OS上工作的Webworks应用程序,你仍然需要它。

+0

谢谢安德鲁,你真好!虽然你的回答非常重要,应该在他们的文档中更好地指出,但我真的不使用HTML5(我的意思是,在这个示例中是的,但实际上我可以在这些函数中写入所有内容)。问题是他们根本就没有被调用。 – 2011-04-14 08:58:32

+0

**所以你试了一下,这不起作用?**我的猜测是localStorage不存在,所以函数调用在尝试访问一个不存在的对象时就死了。尝试改变你的功能,像'function saveMe(){alert(“Save Menu Item Chosen”);}'确保菜单项功能实际上被调用。 – 2011-04-14 13:02:21

+0

是的,你是对的!非常感谢!!! – 2011-04-17 17:22:45