@ryanuo/utils
Version:
提供多种实用工具函数,涵盖算法、浏览器操作、网络请求等多个领域
60 lines (59 loc) • 1.87 kB
JavaScript
export function manageClasses(el, action, classes) {
classes.forEach((cls) => el.classList[action](cls));
}
export function onceEventListener(target, event, handler) {
const wrapper = (e) => {
handler(e);
target.removeEventListener(event, wrapper);
};
target.addEventListener(event, wrapper);
}
export function isMobile() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
);
}
export async function copyToClipboard(text) {
try {
await navigator.clipboard.writeText(text);
return true;
} catch {
const textarea = document.createElement("textarea");
textarea.value = text;
document.body.appendChild(textarea);
textarea.select();
if (!document?.execCommand)
return false;
const result = document?.execCommand("copy");
document.body.removeChild(textarea);
return result;
}
}
export function enterFullScreen(selector, event = "click") {
const elements = document.querySelectorAll(selector);
if (elements.length === 0) {
console.error(`No elements found for selector ${selector}`);
return;
}
if (!document.fullscreenEnabled) {
console.error("Your browser does not support fullscreen mode");
return;
}
elements.forEach((element) => {
element.addEventListener(event, async () => {
try {
if (document.documentElement.requestFullscreen) {
await document.documentElement.requestFullscreen();
} else if ("webkitRequestFullscreen" in document.documentElement) {
;
document.documentElement.webkitRequestFullscreen();
} else if ("msRequestFullscreen" in document.documentElement) {
;
document.documentElement.msRequestFullscreen();
}
} catch (err) {
console.error("Failed to enter fullscreen:", err);
}
});
});
}