有没有办法禁用 CTRL + I,.NET UWP WebView 中的制表符插入

Is there a way to disable CTRL + I, tab insertion in .NET UWP WebView

我目前正在开发一个 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>

Is there a way to disable CTRL + I, tab insertion in .NET UWP WebView

恐怕你不能从 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 方法检测按键事件并禁用默认行为,并在 Ctrl + i[=23 时添加执行新命令=] 像上面那样按下。