[toc]
浏览器相关
判断是否国内
function isInland() {
return navigator.language.toLowerCase() === 'zh-cn'
}
浏览器全屏
function fullScreen() {
// 方法必须放到用户触发的事件里面
e.click(function(){
document.documentElement.webkitRequestFullScreen();
document.webkitExitFullScreen();//退出全屏
})
// 除了opera不加前缀,还有moz;ie暂不支持;
// IE中用
function a(){
var b=new ActiveXObject("Wscript.shell");
b.sendKeys("{F11}");
}
a()
}
浏览器类别和版本
/**
* @return [浏览器名称, 版本]
*/
function browserInfo() {
const ua = navigator.userAgent
let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []
let tem
if(/trident/i.test(M[1])){
tem= /\brv[ :]+(\d+)/g.exec(ua) || [];
return ['msie', (tem[1] || '')];
}
if(M[1]=== 'Chrome'){
tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'opera').split(' ');
}
M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
return [M[0].toLocaleLowerCase(), Number(M[1])];
}
复制内容
简单实现
<textarea cols="20" rows="10" id="content">用户定义的代码区域</textarea>
<input type="button" onClick="copy()" value="点击复制代码" />
function copy() {
var ele = document.getElementById('content');
ele.select();
document.execCommand('copy');
alert('已复制,可贴粘');
}
复制粘贴时带上作者等信息
// copy、cut、paste 事件
document.body.oncopy = e => {
/*
clipboardData对象:用于访问以及修改剪贴板中的数据
getData()、setData()、clearData()
*/
e.preventDefault();
let clipboardData = (e.clipboardData || window.clipboardData); // 兼容处理
copyContent = window.getSelection(0).toString()
combineContent = `${copyContent} \n 作者:warren \n 时间:2020-08-03 \n`
if (e.clipboardData) {
return clipboardData.setData('text/plain', combineContent)
} else {
// IE
return window.clipboardData.setData("text/plain", combineContent);
}
}
使用插件 clipboard.js
https://github.com/zenorocha/clipboard.js
检测用户是否打开了控制台
function checkOpenDevTool() {
let element = document.createElement('div');
Object.defineProperty(element, 'id', {
get: function () {
window.location.href = 'https://www.baidu.com'
}
});
// 原理为开发者工具会自动读取元素id的特性 针对chrome 72 以上版本
// debug 输出的信息不会显示,只有在打开显示级别在verbose的情况下,才会显示
console.debug(element);
}