库导出的方法不能从代码中调用,而是从 DevTools 中调用
Method exported by library cannot not be invoked from code, but from DevTools
任务是创建一个 Tizen 可穿戴应用程序,目标是 Tizen 2.3.2,使用 TAU 框架。
应用程序本身由两部分组成:
一项服务在后台运行,从服务器接收通知。服务收到的消息正在传递到 UI-应用程序。
只要收到消息,UI 本身就会被服务启动或带到前台。应用程序中存在多个 'popups',它们相应地处理每个(可能的)通知。使用 tau.openPopup('popId')
.
打开弹出窗口
但是,从代码调用 tau.openPopup
会导致错误:
TypeError: 'undefined' is not a function (evaluating 'tau.openPopup('process-popup')')
从开发控制台 (Chrome DevTools) 调用相同的表达式确实按预期工作,这意味着库确实已正确加载并且其方法正在正确导出。
重新创建 GUI 应用程序(使用 Tizen Studio 提供的模板)没有解决问题。此时我运行没主意了;可能是因为我缺乏使用 JavaScript.
的经验
这种奇怪行为的原因可能是什么?
可能是 'import' 或 'require',因为您正尝试使用来自 app.js 的对象。
我很确定问题出在您没有使用正确的选择器。如果 'process-popup' 是您的弹出窗口的 ID,请使用“#process-popup”作为选择器,应该如下所示:
tau.openPopup('#process-popup')
我知道这是一个旧线程,但有人可能会再次遇到那个问题...
奇怪的行为导致了一个事实,即允许在所有资源完成加载之前执行脚本。
在这个特定问题中,TAU 库是在我的脚本之后加载的,这意味着方法 tau.openPopup
在调用时尚未被浏览器加载,因此未定义。
从控制台打开调用时,恰好浏览器加载完毕,定义方法
这个问题可以通过等待浏览器完成加载资源来解决。
最简单的 native 解决方案是在 window.onLoad
事件上注册回调(或事件侦听器);例如:
window.onload = function () {
// Now we can do awesome stuff here!
}
TAU openPopup 方法与页面的 Router 上下文一起运行,然后要使用它,您必须等待页面小部件完全加载。所以使用页面事件"pageshow":
// get element from your div with class="ui-page"
var page = document.getElementById("pageIndicatorPage");
page.addEventListener("pageshow", function() {
tau.openPopup('#process-popup');
});
任务是创建一个 Tizen 可穿戴应用程序,目标是 Tizen 2.3.2,使用 TAU 框架。
应用程序本身由两部分组成:
一项服务在后台运行,从服务器接收通知。服务收到的消息正在传递到 UI-应用程序。
只要收到消息,UI 本身就会被服务启动或带到前台。应用程序中存在多个 'popups',它们相应地处理每个(可能的)通知。使用
tau.openPopup('popId')
. 打开弹出窗口
但是,从代码调用 tau.openPopup
会导致错误:
TypeError: 'undefined' is not a function (evaluating 'tau.openPopup('process-popup')')
从开发控制台 (Chrome DevTools) 调用相同的表达式确实按预期工作,这意味着库确实已正确加载并且其方法正在正确导出。
重新创建 GUI 应用程序(使用 Tizen Studio 提供的模板)没有解决问题。此时我运行没主意了;可能是因为我缺乏使用 JavaScript.
的经验这种奇怪行为的原因可能是什么?
可能是 'import' 或 'require',因为您正尝试使用来自 app.js 的对象。
我很确定问题出在您没有使用正确的选择器。如果 'process-popup' 是您的弹出窗口的 ID,请使用“#process-popup”作为选择器,应该如下所示:
tau.openPopup('#process-popup')
我知道这是一个旧线程,但有人可能会再次遇到那个问题...
奇怪的行为导致了一个事实,即允许在所有资源完成加载之前执行脚本。
在这个特定问题中,TAU 库是在我的脚本之后加载的,这意味着方法 tau.openPopup
在调用时尚未被浏览器加载,因此未定义。
从控制台打开调用时,恰好浏览器加载完毕,定义方法
这个问题可以通过等待浏览器完成加载资源来解决。
最简单的 native 解决方案是在 window.onLoad
事件上注册回调(或事件侦听器);例如:
window.onload = function () {
// Now we can do awesome stuff here!
}
TAU openPopup 方法与页面的 Router 上下文一起运行,然后要使用它,您必须等待页面小部件完全加载。所以使用页面事件"pageshow":
// get element from your div with class="ui-page"
var page = document.getElementById("pageIndicatorPage");
page.addEventListener("pageshow", function() {
tau.openPopup('#process-popup');
});