有没有一种方法可以检测当前的输入语言设置
Is there a way to detect what the input language setting is currently?
我基本上想知道系统的输入语言是什么(对于设置了多种语言输入法的用户)。这将确定<textarea>
的文本方向是否应该是rtl
。
请记住,此设置可以在加载页面后更改。
在JavaScript/jQuery中有没有一种简单的方法可以做到这一点?
浏览器没有方法来判断当前键盘布局(输入语言)是什么。正如@kirilloid所提到的,一种可能的解决方法是检查keyup
上的keycode
,并据此确定语言。
Javascript无法访问Accept-Language HTTP标头,这是浏览器将这些信息传输到服务器的方式。
这意味着您必须以某种方式使用服务器端脚本,并将Accept-Language值作为javascript变量发送。
如果您想动态检查它,您可以对服务器端脚本进行ajax调用,该脚本只需从ajax请求中返回Accept-Language头。这样,你可能会发现那些在加载页面后更改语言设置的人。
我遇到了这种情况,所以我为此写了一个jQuery插件:
$.fn.checkDirection = function() {
var dir = checkRTL(this.val()[0]) ? 'RTL' : 'LTR';
this.css("direction", dir);
function checkRTL(s) {
var ltrChars = 'A-Za-z'u00C0-'u00D6'u00D8-'u00F6'u00F8-'u02B8'u0300-'u0590'u0800-'u1FFF' + ''u2C00-'uFB1C'uFDFE-'uFE6F'uFEFD-'uFFFF',
rtlChars = ''u0591-'u07FF'uFB1D-'uFDFD'uFE70-'uFEFC',
rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');
return rtlDirCheck.test(s);
}
};
基本上,一旦用户开始键入,它就会检查语言的方向,并相应地设置选择器的方向。用法如下:
$('textarea').on('input', function(){
$(this).checkDirection();
});
也许一个解决方案是在键代码之间有一个映射(将用户按在键盘上)以及写入或其实际UTF-16代码点的实际字母/字符/符号
不同的键盘有时会写出不同的字符,即使它们位于键盘上的同一位置(用键代码标记)。因此,例如,键盘上的同一个键(键代码)可以映射到这些符号/字符/字母。
Ç
-在西班牙
ú
-意大利
#
-德国
µ
-在比利时
这里有一个示例代码,它不使用任何映射来确定它可能是什么语言。但这是一个开始,因为它检查键代码、实际字符/字母/符号或字形,以及整数中的UTF-16代码点。此外,据我所见,在MDN上,没有一个方法和属性被标记为不推荐使用,而在一些示例中使用的是charCode和keyCode。
var keyCode;
var character;
var utfCodePointInDecimal
function checkCodes(event) {
var that = event
checkKeyCode(that);
checkChar(that);
charUTFPoint();
console.log("keycode/location on keyboard: " + keyCode);
console.log("character: " + character);
console.log("utf code point: " + utfCodePointInDecimal)
}
function checkKeyCode(e) {
keyCode = e.code;
}
function checkChar(e) {
character = e.key;
}
function charUTFPoint() {
utfCodePointInDecimal = Number(character.codePointAt(0));
}
window.onkeydown = checkCodes;
这是一个指向UTF-16字符列表的链接。(注意,代码点为十六进制)
http://www.fileformat.info/info/charset/UTF-16/list.htm
这是我发现的一个网站,每种语言都有不同的映射。我相信它是用C语言编写的,但您可能可以将其用作模板,并在JavaScript中编写自己的映射
https://beta.docs.qmk.fm/using-qmk/simple-keycodes/reference_keymap_extras
- 检测输入值
- 使用JavaScript检测输入的字符
- javascript日期选择器检测输入字段中更改的值
- 检测输入是否有焦点
- jquery ui:检测输入中的首次时间变化
- 一种 html 表单,可自动检测输入并相应地更改图像
- 简化 jQuery 以检测输入值的变化
- 检测输入框何时被键盘填充,何时被条形码扫描仪填充
- j查询检测输入的值
- 检测输入框中的字符
- 用于检测<输入>中的文本何时滚动的事件
- 检测输入占位符是否可见
- 通过具有公共元素来检测输入是否匹配
- Javascript/jQuery检测输入是否集中
- 立即检测输入[类型=“文本”]的变化
- 在jQuery中检测输入之外的键入
- 如何检测输入字段的HTML5约束违反
- 检测输入中最大的数字
- 检测输入字段中丢失的文本
- Jquery -检测输入之外的点击