【问题标题】:Is there a way to disable CTRL + I, tab insertion in .NET UWP WebView有没有办法禁用 CTRL + I,.NET UWP WebView 中的选项卡插入
【发布时间】:2021-04-27 11:52:01
【问题描述】:

我目前正在开发一个 UWP 应用程序,并且我有一个 WebView 控件,用户可以与之交互。在这个 WebView 中,用户可以格式化一些文本,我希望 CTRL + I 将斜体格式应用于任何选定的文本。

当按下CTRL + I 时,应用程序会格式化文本(在访问的站点上使用 jQuery 处理),但是,任何选定的文本都会被替换为制表符。

我知道CTRL + I keypress 事件会导致 keycode 9,它对应于一个制表符,但是,我想知道是否有办法禁用这种交互?

我尝试拦截KeyDownPreviewKeyDown 事件,但没有成功。事件从未触发,我假设这是因为我在 web 视图中输入文本。 我还检查了在使用普通网络浏览器打开访问页面时未插入字符。

下面是 webview 的上下文。

<Page
    <!-- imports -->
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>
        <WebView x:Name="Editor"
                 Source="ms-appx-web:///WebView.html"
                 ScriptNotify="Editor_ScriptNotify"
                 NavigationStarting="Editor_NavigationStarting"
                 NavigationCompleted="Editor_NavigationCompleted"/>
    </Grid>
</Page>

【问题讨论】:

    标签: c# uwp winrt-xaml uwp-xaml


    【解决方案1】:

    有没有办法在 .NET UWP WebView 中禁用 CTRL + I,选项卡插入

    恐怕你不能从 uwp 端禁用 Ctrl + i 。更好的方法是在 html 端使用 javascript 处理多个按键。

    例如

     <body>
        <script type="text/javascript">
    
            let keysPressed = {};
            document.addEventListener('keyup', (event) => {
                delete keysPressed[event.key];
            });
            document.addEventListener('keydown', (event) => {
                keysPressed[event.key] = true;
    
                if (keysPressed['Control'] && event.key == 'i') {
    
                    event.preventDefault();
    
                    document.execCommand('italic', false, null);
    
                }
            });
    
        </script>
        <div id="editor1" contenteditable="true">
            The quick brown fox jumped over the lazy dog.
        </div>
    </body>
    

    您可以使用preventDefault 方法检测keydown 事件并禁用默认行为,并在按下 Ctrl + i 时添加执行新命令,如上所示。

    【讨论】:

    • 非常感谢!这正是我正在寻找的解决方案!
    猜你喜欢
    • 2019-09-17
    • 2018-01-05
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多