检测在 Mac 上键入的重音字符

Detect accented chars typed on Mac?

本文关键字:字符 Mac 检测      更新时间:2023-09-26

我正在尝试通过侦keypress听页面<body>上的 es 和 keydown s 来模拟 SVG 中的<input type="text">

Mac上的重音字母似乎存在问题。您必须键入 Opt+e,a 用于获取 á,而对于其他元音也是如此。

我像这样听身体(JSFiddle(:

var theElement = document;
theElement.onkeypress = function(e) {
    console.log("Press: " + String.fromCharCode(e.keyCode) + " " + e.keyCode);
}
theElement.onkeydown = function(e) {
    console.log("Down: " + String.fromCharCode(e.keyCode) + " " + e.keyCode);
}
theElement.onkeyup = function(e) {
    console.log("Up: " + String.fromCharCode(e.keyCode) + " " + e.keyCode);
}

在 Windows 上,键入一个é我得到以下日志:

向下: Þ 222 (指数(:27

上: Þ 222 (索引(:30

下降: E 69 (索引(:27

出版社: é 233 (索引(:24

上一篇: E 69 (索引(:30

它工作正常。但是在Mac上,我得到:

下降: 18 (索引(:27

下降: E 69 (索引(:27

上一篇: E 69 (索引(:30

上: 18 (索引(:30

下降: E 69 (索引(:27

印刷机: e 101 (索引(:24

上: E 69

18是向上或向下按下 Option 键,但它似乎忘记了重音正在尝试输入,我只按了e字符。

更奇怪的是,当我将相同的事件附加到<input type="text">框时,我会在input上键入é(再次在Mac中(,但新闻事件显示标准e而不是重音(JSFiddle(:

下降: 18 (索引(:27

向下: å 229 (索引(:27

上一篇: E 69 (索引(:30

上: 18 (索引(:30

向下: å 229 (索引(:27

上一篇: E 69 (索引(:30

不管

我输入什么重音字母(éá,你的名字(,它显示相同的229代码。

日志与 Windows 中的<body>日志完全相同 - 即,它在 Windows 上的两个小提琴中工作正常且一致。

正在最近的谷歌浏览器中测试两者(我不能发誓它是最新的,但它是最新的(。

哈尔普?!

你可以抓住选项键

var theElement = document;
theElement.onkeypress = function(e) {
    if (theElement.accent === true)
        console.log("Press: " + String.fromCharCode(e.keyCode) + " (accented) " + e.keyCode);
    else 
        console.log("Press: " + String.fromCharCode(e.keyCode) + " " + e.keyCode);
}
theElement.onkeydown = function(e) {
    theElement.accent = true;
    if (theElement.accent === true)
        console.log("Press: " + String.fromCharCode(e.keyCode) + " (accented) " + e.keyCode);
    else 
        console.log("Press: " + String.fromCharCode(e.keyCode) + " " + e.keyCode);
}
theElement.onkeyup = function(e) {
    theElement.accent = false;
    if (theElement.accent === true)
        console.log("Press: " + String.fromCharCode(e.keyCode) + " (accented) " + e.keyCode);
    else 
        console.log("Press: " + String.fromCharCode(e.keyCode) + " " + e.keyCode);
}

我的意思是,在累积实现中,您可能希望创建一个函数来从数组或其他东西中获取重音字符代码。