63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
const isff = typeof navigator !== 'undefined' ? navigator.userAgent.toLowerCase().indexOf('firefox') > 0 : false;
|
|
|
|
// 绑定事件
|
|
function addEvent(object, event, method, useCapture) {
|
|
if (object.addEventListener) {
|
|
object.addEventListener(event, method, useCapture);
|
|
} else if (object.attachEvent) {
|
|
object.attachEvent(`on${event}`, method);
|
|
}
|
|
}
|
|
function removeEvent(object, event, method, useCapture) {
|
|
if (object.removeEventListener) {
|
|
object.removeEventListener(event, method, useCapture);
|
|
} else if (object.detachEvent) {
|
|
object.detachEvent(`on${event}`, method);
|
|
}
|
|
}
|
|
|
|
// 修饰键转换成对应的键码
|
|
function getMods(modifier, key) {
|
|
const mods = key.slice(0, key.length - 1);
|
|
for (let i = 0; i < mods.length; i++) mods[i] = modifier[mods[i].toLowerCase()];
|
|
return mods;
|
|
}
|
|
|
|
// 处理传的key字符串转换成数组
|
|
function getKeys(key) {
|
|
if (typeof key !== 'string') key = '';
|
|
key = key.replace(/\s/g, ''); // 匹配任何空白字符,包括空格、制表符、换页符等等
|
|
const keys = key.split(','); // 同时设置多个快捷键,以','分割
|
|
let index = keys.lastIndexOf('');
|
|
|
|
// 快捷键可能包含',',需特殊处理
|
|
for (; index >= 0;) {
|
|
keys[index - 1] += ',';
|
|
keys.splice(index, 1);
|
|
index = keys.lastIndexOf('');
|
|
}
|
|
|
|
return keys;
|
|
}
|
|
|
|
// 比较修饰键的数组
|
|
function compareArray(a1, a2) {
|
|
const arr1 = a1.length >= a2.length ? a1 : a2;
|
|
const arr2 = a1.length >= a2.length ? a2 : a1;
|
|
let isIndex = true;
|
|
|
|
for (let i = 0; i < arr1.length; i++) {
|
|
if (arr2.indexOf(arr1[i]) === -1) isIndex = false;
|
|
}
|
|
return isIndex;
|
|
}
|
|
|
|
export {
|
|
isff,
|
|
getMods,
|
|
getKeys,
|
|
addEvent,
|
|
removeEvent,
|
|
compareArray,
|
|
};
|