如何在UWP托管应用程序(JS)中完全禁用后退按钮

时间:2017-06-28 21:38:33

标签: navigation uwp windows-10

我有一个指向网站的UWP托管应用程序(JavaScript)。

在网站内部,我有一个iframe,允许导航到不同的网址。

当iframe导航时,UWP应用程序的“后退”按钮突然出现在标题栏中。

我想完全禁用/删除该后退按钮,因为:

  1. 点击后,如果iframe不在DOM
  2. 中,则会崩溃应用程序
  3. 就我而言,后退导航与iframe
  4. 内的内容无关
  5. 该网站是单页网页应用,一般不需要背面导航
  6. MSDN documentation表示默认情况下应禁用标题栏后退按钮。我没有做任何事情来启用它。

    我已尝试按如下方式截取事件,但iframe仍然执行后退导航(如果不再有iframe,则应用程序崩溃):

        // In the main website window (not the iframe)
        var uiCore = Windows.UI.Core;
        var navMgr = uiCore.SystemNavigationManager.getForCurrentView();
        navMgr.onbackrequested = (e) => {
            console.log("Back navigation"); // This is never logged
            navMgr.appViewBackButtonVisibility = uiCore.AppViewBackButtonVisibility.collapsed;
            e.handled = true;
        };
    

    有谁知道如何阻止UWP平台为托管应用添加后退按钮?

2 个答案:

答案 0 :(得分:1)

您应该只需关闭代码的这一部分即可关闭后退按钮的可见性,而不是连接onBackRequested()回调:

var uiCore = Windows.UI.Core;
var navMgr = uiCore.SystemNavigationManager.getForCurrentView();
navMgr.appViewBackButtonVisibility = uiCore.AppViewBackButtonVisibility.collapsed;

答案 1 :(得分:0)

好吧...在 Microsoft UWP示例中,您可以找到另一种隐藏/显示此按钮的方法。我只是在我的UWP应用中将它们的样本用作骨架。因此,下面是我隐藏后退箭头的操作。

var server = app.listen(serverPort, function () {                                                
    var host = server.address().address
    var port = server.address().port                                                             
    console.log("Example app listening at http://%s:%s", host, port)                             
}); 
server.timeout = 600000; // this was not set before.  The default appeared to have been 4 minutes. Setting this fixed it!  (NOTE this should be in milliseconds - so this is 10 minutes!)