javascript how to

  • 原理

    使用window.URL.createObjectURL和window.URL.revokeObjectURL method和blob对象实现文件下载

    精简版封装

    /**
     * 创建并下载文件
     * @param  {String} fileName 文件名
     * @param  {String} content  文件内容
     */
    function saveAs(content, filename) {
        var link = document.createElement('a');
        var blob = new Blob([content]);
        link.do


  • JavaScript是无法获得或存储在客户端的IP。但是由于JavaScript能够发送HTTP请求,而服务器端语言能够获取用户的公网IP,所以你可以利用这个获取IP。 换句话说,如果你想得到一个用户就取决于请求任何服务器检索公网IP。 随着WebRTC技术的发展,利用rtcpeerconnection可以检索用户私有IP。

    使用 webRTC (获取私有IP)

    RTCPeerConnection技术详细可见MDN

    /**
     * Get the user IP throught the webkitRTCPeerConnection
     * @param onNewIP {Function} 

  • 原理

    利用开启隐身模式的chrome浏览器不能通过 requestFileSystem Api 访问系统文件的特点作为hack依据进行检测。

    检测函数

    /**
     * Determine wheter the incognito mode of Google Chrome is available or not.
     * 
     * @param callback Anonymous function executed when the availability of the incognito mode has been checked.
     */
    function isIncognito(call

  • 背景

    在视频网站经常见到flash播放器需要加载flash插件才能播放,那么如何检测浏览器是否已有插件或者以经下载。

    原理

    其实就是利用了浏览器插件检测的办法。IE检查插件是否安装,通过创建ActiveXObject来实现,而FF,Chrome等浏览器,是通过创建navigator.plugins来实现。

    检测方法

    很简单直接看代码

    function flashCheck() {
        let swf,
            swf_ver,
            hasFlash = false,
            ver;
        try {
            if (document.all) {