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>
Я думаю, что какой-то сценарий должен быть добавлен, но я не знаю, какой.
5 ответов
Я не знаю, как это работает сейчас, но я нашел решение. Я просто изменил рабочее пространство, и это сработало.
Пространство имен 'tizen', кажется, исчезает ни на чем, кроме файлов непосредственно в.wgt. Так что, если он загружает веб-страницу откуда-то еще, "тизен" просто уходит.
Обходное решение, которое может работать для вас, - это наличие файла.js /.html локально внутри виджета, который выполняет то, что вам нужно для вас... и затем все остальное загружается динамически. В нашем случае у нас был локальный.html-файл, выполняющий tizen.registerKey для нашего приложения, а затем перенаправление window.onload к нашему размещенному решению.
tizen
Пространство имен обычно доступно только после того, как правая привилегия была объявлена в config.xml
То же самое касается любого другого API.
Вот как вы объявляете привилегии или можете просто добавить эту строку:
<tizen:privilege name="http://tizen.org/privilege/tizen"/>
в config.xml
,
Только после того, как установлена привилегия, создается API Tizen Web Device (под window.tizen
Пространство имен).
Точно так же, если вы хотите, чтобы API был доступен window.tizen.download
Пространство имен вам нужно иметь:
<tizen:privilege name="http://tizen.org/privilege/download"/>
добавлен в ваш список привилегий в config.xml
,
Для получения полного списка привилегий используйте IDE или проверьте этот список.
Какую версию SDK вы пытаетесь использовать? Я думаю, вот решение: http://www.mail-archive.com/general@lists.tizen.org/msg00092.html
На самом деле вам не нужно устанавливать привилегию в config.xml для использования API tizen.application.xx.
Без установки каких-либо привилегий, код tizen.application.getCurrentApplication().exit()
будет работать нормально.
Это может быть временная ошибка на платформе. Как вы знаете, сейчас Tizen очень нестабилен, поскольку только растет.
Просто отключите контрольную кнопку "Включить редактирование в реальном времени" в меню "Запуск конфигураций" (щелкните правой кнопкой мыши проект -> "Запуск от имени" -> "Выполнить конфигурации...")