我正在开发一个适用于Windows 8.1的HTML / JS应用程序,当用户从附加处理程序的页面导航时,无法调试连接到顶部NavBar对象的处理程序中发生的崩溃。
功能非常简单:当用户登陆屏幕时,我会使用它的.show()方法自动显示WinJS Flyout。现在,当用户调用顶部NavBar对象时,我有一个隐藏Flyout对象的处理程序。当NavBar被解雇时,我还有另一个处理程序.shows()Flyout。
用户导航到其他页面时会出现问题。这是我的问题屏幕的代码:
var appBar = class.that.constructs.NavBar;
ready : function (element, options) {
var self = this;
...
appBar.topControl.onbeforeshow = self.hideFlyout;
appBar.topControl.onbeforehide = self.showFlyout;
$('#flyout').addClass('activated');
$('#flyout')[0].winControl._sticky = true;
$('#flyout')[0].winControl.show();
},
hideFlyout: function() {
$('#flyout').topControl.winControl.hide();
},
showFlyout: function() {
$('#flyout').topControl.winControl.show();
},
unload: function () {
appBar.topControl.onbeforeshow = null;
appBar.topControl.onaftershow = null;
}
正如您所看到的,我在卸载页面时删除了事件处理程序,但这似乎并没有成功。我仍然遇到这个崩溃错误:
JavaScript runtime error: Unable to get property 'classList' of undefined or null reference
它在showFlyout
处理程序上崩溃了。在导航到新页面时,有没有人建议如何避免崩溃?
答案 0 :(得分:1)
弹出窗口的show方法想要一个元素作为必需参数,它是将被附加到的元素。
在您的情况下,您必须找到一个元素并将其传递给您的函数,例如:
var myButton= document.getElementById("myButton");
$('#flyout').topControl.winControl.show(myButton);
请查看此页面以获取更广泛的示例:http://msdn.microsoft.com/en-us/library/windows/apps/br211726.aspx