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

问题描述

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

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

我知道 CTRL + I 按键事件导致键码 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>

解决方法

有没有办法在 .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>

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...