任务是使用TAU框架创建一个针对Tizen 2.3.2的Tizen可穿戴应用程序。
应用程序本身由两部分组成:
服务正在后台运行,从服务器接收通知。服务接收的消息将传递给UI应用程序。
无论何时收到消息,UI本身都会被服务启动或带到前台。多个弹出窗口'存在于应用程序中,相应地处理每个(可能的)通知。弹出窗口正在使用tau.openPopup('popId')
打开。
但是,从代码中调用tau.openPopup
会导致错误:
TypeError:' undefined'不是一个功能(评估' tau.openPopup(' process-popup')')
从开发控制台(Chrome DevTools)调用相同的表达式确实可以正常工作,这意味着该库确实已正确加载并且其方法正在正确导出。
重新创建GUI应用程序(使用Tizen Studio提供的模板)并没有解决问题。在这一点上,我没有想法;可能是由于我缺乏使用JavaScript的经验。
造成这种特殊行为的原因是什么?
答案 0 :(得分:1)
TAU openPopup方法使用页面的路由器上下文运行,然后使用它你必须等待页面小部件完全加载。所以使用页面事件“pageshow”:
// get element from your div with class="ui-page"
var page = document.getElementById("pageIndicatorPage");
page.addEventListener("pageshow", function() {
tau.openPopup('#process-popup');
});
答案 1 :(得分:0)
进口'或者'要求'也许是因为你试图使用app.js中的对象。
答案 2 :(得分:0)
我很确定问题是,您没有使用正确的选择器。如果'process-popup'是弹出窗口的ID,请使用'#process-popup'作为选择器,如下所示:
tau.openPopup('#process-popup')
我知道这是一个老话题,但有人可能会再次遇到这个问题......
答案 3 :(得分:0)
这种奇特的行为导致了这样一个事实:允许在所有资源加载完成之前执行脚本。
在这个特殊问题中,TAU库是在我的脚本之后加载的,这意味着方法tau.openPopup
在调用时尚未被浏览器加载,因此未定义。
当从控制台打开和调用时,浏览器碰巧完成加载,因此定义了方法。
通过等待浏览器完成加载资源,可以解决此问题。
最简单的 native 解决方案是在window.onLoad
事件上注册回调(或事件监听器); e.g:
window.onload = function () {
// Now we can do awesome stuff here!
}