随机主页按钮出现在UWP应用程序中

问题描述 投票:1回答:1

不确定是否有人遇到此问题,但每当我点击应用程序中的按钮时,我的UWP应用程序上都会出现一个随机主页按钮。我的应用程序中不存在该按钮,因此我不确定它的来源。它每次出现在同一个地方,如果我拖动窗口它不会随之移动。每次我点击按钮控件时都会出现,然后在4-5秒后消失。

enter image description here

更新经过进一步调查后,我发现了正在发生的事情。我在后台有一个webview控件,在前视图中有按钮控件。我导航到的网站(vans.co.uk)左上角有商店标识,当鼠标悬停在它上面时,会显示“主页”工具提示。但是,如果我单击屏幕上任意位置的按钮控件,并在单击方法中将该按钮的可见性属性更改为折叠,则会显示此“主页”工具提示。单击按钮时折叠按钮时,必须将某种事件传递给webview。这种情况发生在任何网站上,而不仅仅是vans.co.uk,但此网站上的徽标的位置是工具提示弹出的方式。我写了一个简单的应用程序来重新创建:

XAML:

<Page
    x:Class="HomeTootipBug.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:HomeTootipBug"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <WebView x:Name="webView" Visibility="Visible" DefaultBackgroundColor="White" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
        <Button x:Name="btn" Background="Gray" HorizontalAlignment="Center" VerticalAlignment="Center" Width="500" Height="100" Click="btn_Click"></Button>
    </Grid>
</Page>

xaml.cs:

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;


namespace HomeTootipBug
{
    public sealed partial class MainPage : Page
    {
        public bool compOut = false;

        public MainPage()
        {
            this.InitializeComponent();
            webView.Navigate(new Uri("https://www.vans.co.uk"));
        }

        private void btn_Click(object sender, RoutedEventArgs e)
        {
            btn.Visibility = Visibility.Collapsed;
            btn.Visibility = Visibility.Visible;
        }
    }
}
c# xaml uwp windows-10-universal
1个回答
0
投票

这似乎是vans.co.uk如何工作以及UWP事件处理如何工作的一个组合。简而言之,在单击中折叠按钮允许WebView获得焦点,很可能促使面包车网站运行显示主页按钮的JS。

您可以通过将GotFocus事件处理程序添加到WebView来监视所发生的情况。如果从未折叠按钮的方案开始:

    private void btn_Click(object sender, RoutedEventArgs e)
    {
        //btn.Visibility = Visibility.Collapsed;
        //btn.Visibility = Visibility.Visible;

        Debug.WriteLine("Button Clicked "+ e.OriginalSource.ToString());
    }

    private void WebView_GotFocus(object sender, RoutedEventArgs e)
    {
        Debug.WriteLine("Webview got focus");
    }

单击几次按钮时,您可以看到以下调试输出:

Button Clicked Windows.UI.Xaml.Controls.Button
Button Clicked Windows.UI.Xaml.Controls.Button
Button Clicked Windows.UI.Xaml.Controls.Button
Button Clicked Windows.UI.Xaml.Controls.Button
Button Clicked Windows.UI.Xaml.Controls.Button

现在,如果您从代码中删除注释,则启用折叠:

    private void btn_Click(object sender, RoutedEventArgs e)
    {
        btn.Visibility = Visibility.Collapsed;
        btn.Visibility = Visibility.Visible;

        Debug.WriteLine("Button Clicked "+ e.OriginalSource.ToString());
    }

    private void WebView_GotFocus(object sender, RoutedEventArgs e)
    {
        Debug.WriteLine("Webview got focus");
    }

几次点击后,您可以在调试控制台中看到以下输出:

Button Clicked Windows.UI.Xaml.Controls.Button
Webview got focus
Webview got focus
Button Clicked Windows.UI.Xaml.Controls.Button
Webview got focus
Webview got focus
Button Clicked Windows.UI.Xaml.Controls.Button
Webview got focus

这很可能与UWP如何处理event bubbling & routed events有关。

© www.soinside.com 2019 - 2024. All rights reserved.