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

3
我有一个指向网站的UWP托管应用程序(JavaScript)。
在网站内,我有一个iframe,允许导航到不同的URL。
当iframe导航时,“后退”按钮突然出现在UWP应用程序的标题栏中。
我想完全禁用/删除该后退按钮,因为:
1. 如果iframe不再在DOM中,则单击它会使应用程序崩溃 2. 在我的情况下,后退导航对iframe内部的内容不相关 3. 该网站是一个单页Web应用程序,通常没有必要进行后退导航 MSDN文档表示,默认情况下应禁用标题栏后退按钮。 我没有做任何事情来启用它。
我尝试拦截事件如下,但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个回答

2

不要挂钩onBackRequested()回调函数,您应该能够通过以下代码部分关闭返回按钮的可见性:

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

1

嗯...在Microsoft UWP示例中,您可以找到另一种隐藏/显示此按钮的方法。我只是将它们的示例用作我的UWP应用程序的框架。因此,我所做的隐藏返回箭头的操作如下。

public RootFrameNavigationHelper(Frame rootFrame, Microsoft.UI.Xaml.Controls.NavigationView currentNavView)
    {
    ...
      if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 6))
      {
                    // Add two lines
                    CurrentNavView.IsBackEnabled = false;
                    CurrentNavView.IsBackButtonVisible =  Microsoft.UI.Xaml.Controls.NavigationViewBackButtonVisible.Collapsed;
                    // And comment this line 
                    //CurrentNavView.BackRequested += NavView_BackRequested;
      }
    ...
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接