我有一个 TVML 应用程序,顶部有一个菜单,其中包括一个登录/注销按钮(取决于用户是否登录)。当用户退出时,会有一条确认消息和一个注销按钮。如果用户单击该按钮,则执行以下操作:
localStorage.removeItem("userID");
App.reload();
return;
如果我然后尝试重新登录,我会转到登录屏幕,其中有一个表单供用户输入电子邮件和一个下一步按钮,其中包含以下内容:
let keyboard = this._getStringFromTextField();
sessionStorage.setItem("useremail", keyboard.text);
这是 _getStringFromTextField() 函数:
_getStringFromTextField() {
let doc = getActiveDocument();
let textFields = doc.getElementsByTagName('textField');
let textField = textFields.item(0);
return textField.getFeature("Keyboard");
}
问题是 getActiveDocument() 返回 undefined 而不是活动文档。因此,该按钮不起作用,我永远无法进入下一个屏幕,即密码表单。
每当我在退出后重新加载应用程序并立即尝试重新登录时,都会发生这种情况。解决此问题的唯一方法是完全关闭应用程序并重新启动它。
关于为什么会发生这种情况的任何见解?重新加载后如何让 getActiveDocument() 工作?