Tizen SDK: Can't find variable: tizen

孤街浪徒 提交于 2020-07-18 06:52:27

问题


I'm trying to create a web-application using Tizen SDK. When I launch the app everything is fine but when I press a "Back" button on emulator nothing happens and I see a message:

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

I looked at main.js and there's a code:

//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);

A simple alert(window.tizen) said that it is undefined so I thought that some js file wasn't attached to project. Here are scripts that was generated by 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>

I think some script should be added but I don't know which one.


回答1:


The 'tizen' namespace seems to disappear on anything but the files directly in the .wgt. So if it's loading a webpage from somewhere else, the 'tizen' just goes away.

A workaround that might work for you, is having a .js/.html file locally within the widget that does the things you need it to do for you...and then having everything else load dynamically. In our case, we had a local .html file do tizen.registerKey for our application, and then a window.onload redirect to our hosted solution.




回答2:


I don't know how it is working now, but I found the solution. I just changed the workspace and it worked.




回答3:


The tizen namespace is usually available only after the right privilege was declared in config.xml, same goes for any other of the API.

This is how you declare the privileges or you can simply add this line:

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

in config.xml,

Only after the privilege is set the Tizen Web Device API is instantiated (under the window.tizen namespace).

Similarly if you want to have the API available unde window.tizen.download namespace you need to have:

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

added in your privilege list in config.xml.

For a full list of the privileges use the IDE or check this list.




回答4:


What SDK version are you trying to use? I guess, here's a solution: http://www.mail-archive.com/general@lists.tizen.org/msg00092.html




回答5:


Actually , you don't need to set privilege in config.xml for using tizen.application.xx API.

Without setting any privilege ,the code tizen.application.getCurrentApplication().exit() would run normally.

It may be temporary bug at Platform. As you know , Tizen is very unstable for now since is just growing.




回答6:


Just disable checkbutton "Enable Live Editing" in "Run Configurations" menu (rigth click on project -> "Run as" -> "Run configurations...")



来源:https://stackoverflow.com/questions/18366348/tizen-sdk-cant-find-variable-tizen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!