[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);
}
Last Updated:
Contributors: Warren