【问题标题】:Tizen SDK: Can't find variable: tizenTizen SDK:找不到变量:tizen
【发布时间】:2013-08-21 19:47:21
【问题描述】:

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

55435/js/main.js:9:ReferenceError: 找不到变量: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>

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

【问题讨论】:

    标签: javascript tizen tizen-emulator


    【解决方案1】:

    除了 .wgt 中的文件之外,“tizen”命名空间似乎消失了。因此,如果它从其他地方加载网页,“tizen”就会消失。

    一种可能适合您的解决方法是在小部件中本地拥有一个 .js/.html 文件,该文件可以为您完成您需要它为您做的事情……然后让其他所有内容动态加载。在我们的例子中,我们有一个本地 .html 文件为我们的应用程序执行 tizen.registerKey,然后将 window.onload 重定向到我们的托管解决方案。

    【讨论】:

    • 这是对我有用的答案。当我从.wgt 根目录中的.js 文件调用tizen. 函数时,它可以工作;当我从子目录中的.js 文件中调用相同的函数时,它会给出这个命名空间错误。
    【解决方案2】:

    我不知道它现在是如何工作的,但我找到了解决方案。我刚刚更改了工作区,它工作了。

    【讨论】:

    • 感谢您的帮助
    【解决方案3】:

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

    This is how you declare the privileges 或者你可以简单地添加这一行:

    <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 或查看this list

    【讨论】:

    • 即使我在xml中填写了上面的内容,它也不起作用。
    • @AlanLee 在此期间可能会发生变化,尝试使用IDE添加权限
    • 未来的读者,请注意tizen.org/privilege/tizen此时已被弃用。
    【解决方案4】:

    您尝试使用哪个 SDK 版本?我想,这是一个解决方案:http://www.mail-archive.com/general@lists.tizen.org/msg00092.html

    【讨论】:

    • 功能不再用于允许 API/命名空间使用,而是使用特权,检查我的答案。
    【解决方案5】:

    其实使用tizen.application.xx API不需要在config.xml中设置权限。

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 2013-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多