有没有办法禁用 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,它对应于制表符,但是,我想知道是否有办法禁用此交互?
我曾尝试拦截 KeyDown
和 PreviewKeyDown
事件,但没有成功。事件从未触发,我假设这是因为我在 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 时添加执行新命令=] 像上面那样按下。
我目前正在开发一个 UWP 应用程序,我有一个 WebView 控件,用户可以与之交互。在此 WebView 中,用户可以设置一些文本的格式,我希望 CTRL + I
将斜体格式应用于任何选定的文本。
当按 CTRL + I
时,应用程序会格式化文本(在访问的站点上使用 jQuery 处理),但是,任何选定的文本都将替换为制表符。
我知道 CTRL + I
按键事件导致键码 9,它对应于制表符,但是,我想知道是否有办法禁用此交互?
我曾尝试拦截 KeyDown
和 PreviewKeyDown
事件,但没有成功。事件从未触发,我假设这是因为我在 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 时添加执行新命令=] 像上面那样按下。