相关疑难解决方法(0)

用于检测浏览器语言首选项的JavaScript

我一直在尝试使用JavaScript检测浏览器语言首选项.

如果我在IE中设置浏览器语言Tools>Internet Options>General>Languages,如何使用JavaScript读取此值?

Firefox的问题相同.我无法检测到tools>options>content>languages使用的设置navigator.language.

使用时 navigator.userLanguage ,它会检测通过Start>ControlPanel>RegionalandLanguageOptions>Regional Options选项卡完成的设置 .

我曾与测试navigator.browserLanguage,并navigator.systemLanguage但没有返回第一个设置的值(Tools>InternetOptions>General>Languages)

我找到了一个详细讨论这个问题的链接,但问题仍然没有答案:(

javascript localization internationalization

424
推荐指数
18
解决办法
47万
查看次数

使用javascript检测键盘布局

有没有办法使用JavaScript检测当前的键盘布局?我找到了这个,但它只检测访问者是否在英文版面上.我需要知道确切的布局作为字符串,例如de-ch,fren.

javascript jquery keyboard-layout

18
推荐指数
3
解决办法
2万
查看次数

将Javascript keyCode转换为charCode,用于非美国键盘布局(即azerty)

快速背景:

  • 当在浏览器中按下某个键时,会生成三个事件:keyDown,keyPresskeyUp.
  • keyDownkeyUp有一个keyCode属性,大约是按下的物理键.
  • keyPress还具有charCode属性集,该属性集考虑了修饰键和键盘布局(A和a具有相同的keyCode但具有不同的charCode).
  • 所有三个事件都具有指示在这些事件期间按下了哪些修改键的属性.

我是主要的noVNC开发人员,我遇到了一个棘手的问题:noVNC需要转换的charCode值而不使用keyPress事件,原因如下:

  • noVNC需要将keyDown和keyUp事件分别发送到VNC服务器(否则它不是一个功能完备的VNC客户端).
  • 更重要的是,noVNC需要在连接时阻止默认键盘操作,这意味着调用keyDown事件的preventDefault()方法.这具有防止keyPress事件被触发的副作用.

由于键盘布局的不同(即不同的keyCode到charCode映射),我确定noVNC将需要一个用于不同键盘布局的查找表.

但这是真正的问题:在备用布局上,一些不同的物理键具有SAME keyCode.例如,使用azerty(法语)键盘布局,' - '(破折号)和'_'下划线键都生成keyCode 189. Ack !!!

那么......我如何获得正确的keyCode到charCode映射并同时防止默认的浏览器操作?

顺便说一句,我怀疑这个解决方案适用于其他交互式Web应用程序和HTML5游戏,因为您经常希望能够了解有关按键的完整信息,而不会触发对该按键的任何其他浏览器响应.

有用的链接:

解决方案:请参阅下面的帖子.

javascript browser html5 cross-browser

16
推荐指数
1
解决办法
7823
查看次数