Tizen SDK:找不到变量:tizen

3

我正在尝试使用Tizen SDK创建一个Web应用程序。当我启动应用程序时,一切正常,但是当我在模拟器上按下“返回”按钮时,什么也没有发生,我看到了以下消息:

55435/js/main.js:9:ReferenceError: Can't find variable: tizen

我查看了main.js文件,里面有这样的代码:

//Initialize function
var init = function () {
    // TODO:: Do your initialization job
    console.log("init() called");

    // add eventListener for tizenhwkey
    document.addEventListener('tizenhwkey', function(e) {
        if(e.keyName == "back") {
            tizen.application.getCurrentApplication().exit(); // HERE IS THE ERROR
        }
    });
};
$(document).bind('pageinit', init);

一个简单的 alert(window.tizen) 语句显示它是 undefined,因此我认为某些js文件没有连接到项目中。以下是由Tizen SDK生成的脚本:

<script src="tizen-web-ui-fw/latest/js/jquery.js"></script>
<script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw-libs.js"></script>
<script src="tizen-web-ui-fw/latest/js/tizen-web-ui-fw.js" data-framework-theme="tizen-white"></script>
<script type="text/javascript" src="./js/main.js"></script>

我认为需要添加一些脚本,但是我不知道应该添加哪一个。

6个回答

4
“tizen”命名空间似乎只在.wgt文件中直接出现。因此,如果它从其他地方加载网页,“tizen”就会消失。
一个可能适用于您的解决方法是,在小部件内部具有可执行所需操作的本地.js/.html文件…然后使其他所有内容动态加载。在我们的情况下,我们有一个本地.html文件为我们的应用程序执行tizen.registerKey,然后window.onload重定向到我们托管的解决方案。

1
这是对我有效的答案。当我从.wgt根目录中的.js文件调用tizen.函数时,它可以正常工作;但是当我从子目录中的.js文件调用相同的函数时,会出现此命名空间错误。 - Sterling

2

tizen 命名空间通常仅在在config.xml声明正确的权限之后才可用,其他任何API也是如此。

你可以通过这种方式声明权限,或者只需添加此行:

<tizen:privilege name="http://tizen.org/privilege/tizen"/>

config.xml中,只有在设置了权限后才会实例化Tizen Web设备API(在window.tizen命名空间下)。
同样地,如果您想在window.tizen.download命名空间下使用API,则需要添加以下内容:
<tizen:privilege name="http://tizen.org/privilege/download"/>

config.xml中添加到您的特权列表中。

要获取完整的特权列表,请使用IDE或检查此列表


即使我已经在 XML 中填写了上面的内容,但它仍然无法工作。 - Thomas Lee
@AlanLee 在此期间可能已经发生了变化,请尝试使用IDE添加权限。 - Eduard Florinescu
1
未来的读者请注意,http://tizen.org/privilege/tizen 目前已经被弃用。 - Konstantin

2

我不知道现在它是如何工作的,但我找到了解决办法。我只是改变了工作区,然后它就起作用了。


感谢您的帮助。 - AleshaOleg

1

特性不再用于允许API/命名空间使用,而是使用权限,请检查我的答案。 - Eduard Florinescu

1

实际上,在使用tizen.application.xx API时,您不需要在config.xml中设置权限。

没有设置任何权限,代码tizen.application.getCurrentApplication().exit()将正常运行。

这可能是平台上的临时错误。正如您所知,目前Tizen非常不稳定,因为它还在成长中。


0
只需在“运行配置”菜单中禁用复选框“启用实时编辑”(右键单击项目->“运行为”->“运行配置...”)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接