gal*_*007 6 html javascript jquery access-keys
我正在创建一个应该完全通过键盘操作的 Web 应用程序。我必须为用户提供不同按钮的访问键组合,但每个浏览器和平台的访问方式都不同。例如,对于 Ubuntu 中的 Chrome 或 Firefox,如果访问键是“d”,我必须按:
SHIFT+ALT+d
Run Code Online (Sandbox Code Playgroud)
但是如果我从 Firefox 13 或更早版本访问,我必须使用:
CTRL+d
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以自动检测哪些修饰符(SHIFT+ALT 或 CTRL),以便我可以根据用户的平台和浏览器正确更新用户的说明。
蒂亚!
我最终扩展了 jquery 并使用 platform.js:
(function ( $ ) {
// Requires https://github.com/bestiejs/platform.js/blob/master/platform.js
// Uses info https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/accesskey
class KMPlatform{
constructor(p){this.platform = p}
getAccessKeyActivators(){}
}
class KMLinux extends KMPlatform{
getAccessKeyActivators(){
if(platform.name == 'Chrome' || platform.name == 'Firefox')
return ['alt','shift'];
if(platform.name.startsWith('Opera'))
return ['alt'];
return [];
}
}
class KMMac extends KMPlatform{
getAccessKeyActivators(){
if(platform.name == 'Chrome' || platform.name == 'Firefox' || platform.name.startsWith('Opera'))
return ['ctrl','alt'];
return [];
}
}
class KMWindows extends KMPlatform{
getAccessKeyActivators(){
if(platform.name == 'Chrome' || platform.name == 'Firefox')
return ['alt','shift'];
if(platform.name == 'IE' || platform.name.startsWith('Opera'))
return ['alt'];
return [];
}
}
$.extend({
getAccessKeyActivators: function(){
if(platform.os.family == 'Linux')
return (new KMLinux(platform)).getAccessKeyActivators();
else if (platform.os.family.startsWith('Mac'))
return (new KMMac(platform)).getAccessKeyActivators();
else if (platform.os.family.startsWith('Windows'))
return (new KMWindows(platform)).getAccessKeyActivators();
else return [];
}
});
}( jQuery ));
Run Code Online (Sandbox Code Playgroud)
仓库https://github.com/gbosetti/browser-access-keys-activators npm 包https://www.npmjs.com/package/@gbosetti/access-keys-activators
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |