Tizen SDK: не удается найти переменную: tizen

Я пытаюсь создать веб-приложение с помощью Tizen SDK. Когда я запускаю приложение, все в порядке, но когда я нажимаю кнопку «Назад» на эмуляторе, ничего не происходит, и я вижу сообщение:

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>

Я думаю, что какой-то сценарий должен быть добавлен, но я не знаю, какой именно.


person franza    schedule 21.08.2013    source источник


Ответы (6)


Пространство имен «tizen», кажется, исчезает во всем, кроме файлов непосредственно в .wgt. Поэтому, если он загружает веб-страницу откуда-то еще, «tizen» просто исчезает.

Обходной путь, который может сработать для вас, заключается в наличии локального файла .js/.html в виджете, который делает то, что вам нужно, для вас... а затем динамическая загрузка всего остального. В нашем случае у нас был локальный файл .html, выполняющий tizen.registerKey для нашего приложения, а затем перенаправление window.onload на наше размещенное решение.

person David    schedule 10.09.2015
comment
Это ответ, который сработал для меня. Когда я вызываю функцию tizen. из файла .js в корне моего .wgt, она работает; когда я вызываю ту же функцию из файла .js в подкаталоге, она дает эту ошибку пространства имен. - person String; 11.11.2015

Я не знаю, как это работает сейчас, но я нашел решение. Я просто изменил рабочее пространство, и это сработало.

person franza    schedule 24.08.2013
comment
Благодаря вам, это помогло - person AleshaOleg; 19.07.2017

Пространство имен tizen обычно доступно только после того, как в config.xml была объявлена ​​правильная привилегия, то же самое касается любого другого API.

Вот как вы объявляете привилегии или вы можете просто добавить эту строку:

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

in config.xml,

Только после того, как привилегия установлена, создается экземпляр Tizen Web Device API (в пространстве имен window.tizen).

Точно так же, если вы хотите, чтобы API был доступен в пространстве имен unde window.tizen.download, вам необходимо:

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

добавлен в ваш список привилегий в config.xml.

Для получения полного списка привилегий используйте IDE или проверьте этот список.

person Eduard Florinescu    schedule 26.08.2013
comment
это не работает, даже если я заполнил вышеприведенное в xml. - person Thomas Lee; 12.08.2014
comment
@AlanLee Вещи могут внести изменения в то же время, попробуйте использовать IDE, чтобы добавить привилегии - person Eduard Florinescu; 12.08.2014
comment
Будущие читатели, обратите внимание, что на данный момент сайт tizen.org/привилегия/tizen уже устарел. - person Konstantin; 19.04.2015

Какую версию SDK вы пытаетесь использовать? Думаю, вот решение: http://www.mail-archive.com/[email protected]/msg00092.html

person Amarantine    schedule 23.08.2013
comment
функция больше не используется для разрешения использования API/пространства имен, вместо этого используется привилегия, проверьте мой ответ. - person Eduard Florinescu; 26.08.2013

На самом деле вам не нужно устанавливать привилегию в config.xml для использования tizen.application.xx API.

Без установки каких-либо привилегий код tizen.application.getCurrentApplication().exit() будет работать нормально.

Это может быть временная ошибка на платформе. Как вы знаете, Tizen пока очень нестабилен, так как только растет.

person Harry Hyeongseok Heo    schedule 29.08.2013

Просто отключите галочку Enable Live Editing в меню Run Configurations (щелкните правой кнопкой мыши проект -> Запустить от имени -> Запустить конфигурации...)

person Tima Root    schedule 05.07.2020