JavasSript 技巧(1)

1 篇文章 / 0 new
author
JavasSript 技巧(1)
1、原生JavaScript實現字符串長度截取

    function cutstr(str, len) {
        var temp;
        var icount = 0;
        var patrn = /[^\x00-\xff]/;
        var strre = "";
        for (var i = 0; i < str.length; i++) {
            if (icount < len - 1) {
                temp = str.substr(i, 1);
                if (patrn.exec(temp) == null) {
                    icount = icount + 1
                } else {
                    icount = icount + 2
                }
                strre += temp
            } else {
                break
            }
        }
        return strre + "..."
    }

2、原生JavaScript獲取域名主機

    function getHost(url) {
        var host = "null";
        if(typeof url == "undefined"|| null == url) {
            url = window.location.href;
        }
        var regex = /^\w+\:\/\/([^\/]*).*/;
        var match = url.match(regex);
        if(typeof match != "undefined" && null != match) {
            host = match[1];
        }
        return host;
    }

3、原生JavaScript清除空格

    String.prototype.trim = function() {
        var reExtraSpace = /^\s*(.*?)\s+$/;
        return this.replace(reExtraSpace, "$1")
    }

4、原生JavaScript替換全部
方法一
String.prototype.replaceAll = function(s1, s2) {
        return this.replace(new RegExp(s1, "gm"), s2)
 }
方法二
var newStr = str.replace(/\案件服務登錄/g, "")

5、原生JavaScript轉義html標籤

    function HtmlEncode(text) {
        return text.replace(/&/g, '&').replace(/\"/g, '"').replace(/</g, '<').replace(/>/g, '>')
    }

6、原生JavaScript還原html標籤

    function HtmlDecode(text) {
        return text.replace(/&/g, '&').replace(/"/g, '\"').replace(/</g, '<').replace(/>/g, '>')
    }

7、原生JavaScript時間日期格式轉換

    Date.prototype.Format = function(formatStr) {
        var str = formatStr;
        var Week = ['日', '一', '二', '三', '四', '五', '六'];
        str = str.replace(/yyyy|YYYY/, this.getFullYear());
        str = str.replace(/yy|YY/, (this.getYear() % 100) > 9 ? (this.getYear() % 100).toString() : '0' + (this.getYear() % 100));
        str = str.replace(/MM/, (this.getMonth() + 1) > 9 ? (this.getMonth() + 1).toString() : '0' + (this.getMonth() + 1));
        str = str.replace(/M/g, (this.getMonth() + 1));
        str = str.replace(/w|W/g, Week[this.getDay()]);
        str = str.replace(/dd|DD/, this.getDate() > 9 ? this.getDate().toString() : '0' + this.getDate());
        str = str.replace(/d|D/g, this.getDate());
        str = str.replace(/hh|HH/, this.getHours() > 9 ? this.getHours().toString() : '0' + this.getHours());
        str = str.replace(/h|H/g, this.getHours());
        str = str.replace(/mm/, this.getMinutes() > 9 ? this.getMinutes().toString() : '0' + this.getMinutes());
        str = str.replace(/m/g, this.getMinutes());
        str = str.replace(/ss|SS/, this.getSeconds() > 9 ? this.getSeconds().toString() : '0' + this.getSeconds());
        str = str.replace(/s|S/g, this.getSeconds());
        return str
    }

8、原生JavaScript判斷是否為數字類型

    function isDigit(value) {
        var patrn = /^[0-9]*$/;
        if (patrn.exec(value) == null || value == "") {
            return false
        } else {
            return true
        }
    }

9、原生JavaScript設置cookie值

    function setCookie(name, value, Hours) {
        var d = new Date();
        var offset = 8;
        var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
        var nd = utc + (3600000 * offset);
        var exp = new Date(nd);
        exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);
        document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString() + ";domain=360doc.com;"
    }

10、原生JavaScript獲取cookie值

    function getCookie(name) {
        var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
        if (arr != null) return unescape(arr[2]);
        return null
    }

11、原生JavaScript加入收藏夾

    function AddFavorite(sURL, sTitle) {
        try {
            window.external.addFavorite(sURL, sTitle)
        } catch(e) {
            try {
                window.sidebar.addPanel(sTitle, sURL, "")
            } catch(e) {
                alert("加入收藏失敗,請使用Ctrl+D進行添加")
            }
        }
    }

12、原生JavaScript設為首頁

    function setHomepage() {
        if (document.all) {
            document.body.style.behavior = 'url(#default#homepage)';
            document.body.setHomePage('http://www.jq-school.com')
        } else if (window.sidebar) {
            if (window.netscape) {
                try {
                    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")
                } catch(e) {
                    alert("該操作被瀏覽器拒絕,如果想啟用該功能,請在地址欄內輸入 about:config,然後將項 signed.applets.codebase_principal_support 值該為true")
                }
            }
            var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
            prefs.setCharPref('browser.startup.homepage', 'http://www.jq-school.com')
        }
    }

13、原生JavaScript判斷IE6

    var ua = navigator.userAgent.toLowerCase();
    var isIE6 = ua.indexOf("msie 6") > -1;
    if (isIE6) {
        try {
            document.execCommand("BackgroundImageCache", false, true)
        } catch(e) {}
    }

14、原生JavaScript加載樣式文件

    function LoadStyle(url) {
        try {
            document.createStyleSheet(url)
        } catch(e) {
            var cssLink = document.createElement('link');
            cssLink.rel = 'stylesheet';
            cssLink.type = 'text/css';
            cssLink.href = url;
            var head = document.getElementsByTagName('head')[0];
            head.appendChild(cssLink)
        }
    }

15、原生JavaScript返回腳本內容

    function evalscript(s) {
            if(s.indexOf('<script') == -1) return s;
            var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
            var arr = [];
            while(arr = p.exec(s)) {
                    var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;
                    var arr1 = [];
                    arr1 = p1.exec(arr[0]);
                    if(arr1) {
                            appendscript(arr1[1], '', arr1[2], arr1[3]);
                    } else {
                            p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
                            arr1 = p1.exec(arr[0]);
                            appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
                    }
            }
            return s;
    }

16、原生JavaScript清除腳本內容

    function stripscript(s) {
            return s.replace(/<script.*?>.*?<\/script>/ig, '');
    }

17、原生JavaScript動態加載腳本文件

    function appendscript(src, text, reload, charset) {
            var id = hash(src + text);
            if(!reload && in_array(id, evalscripts)) return;
            if(reload && $(id)) {
                    $(id).parentNode.removeChild($(id));
            }
     
            evalscripts.push(id);
            var scriptNode = document.createElement("script");
            scriptNode.type = "text/javascript";
            scriptNode.id = id;
            scriptNode.charset = charset ? charset : (BROWSER.firefox ? document.characterSet : document.charset);
            try {
                    if(src) {
                            scriptNode.src = src;
                            scriptNode.onloadDone = false;
                            scriptNode.onload = function () {
                                    scriptNode.onloadDone = true;
                                    JSLOADED[src] = 1;
                            };
                            scriptNode.onreadystatechange = function () {
                                    if((scriptNode.readyState == 'loaded' || scriptNode.readyState == 'complete') && !scriptNode.onloadDone) {
                                            scriptNode.onloadDone = true;
                                            JSLOADED[src] = 1;
                                    }
                            };
                    } else if(text){
                            scriptNode.text = text;
                    }
                    document.getElementsByTagName('head')[0].appendChild(scriptNode);
            } catch(e) {}
    }

18、原生JavaScript返回按ID檢索的元素對像

    function $(id) {
            return !id ? null : document.getElementById(id);
    }

19、原生JavaScript返回瀏覽器版本內容

    function browserVersion(types) {
            var other = 1;
            for(i in types) {
                    var v = types<i> ? types<i> : i;
                    if(USERAGENT.indexOf(v) != -1) {
                            var re = new RegExp(v + '(\\/|\\s)([\\d\\.]+)', 'ig');
                            var matches = re.exec(USERAGENT);
                            var ver = matches != null ? matches[2] : 0;
                            other = ver !== 0 && v != 'mozilla' ? 0 : other;
                    }else {
                            var ver = 0;
                    }
                    eval('BROWSER.' + i + '= ver');
            }
            BROWSER.other = other;
    }

20、原生JavaScript元素顯示的通用方法

    function $(id) {
            return !id ? null : document.getElementById(id);
    }
    function display(id) {
            var obj = $(id);
            if(obj.style.visibility) {
                    obj.style.visibility = obj.style.visibility == 'visible' ? 'hidden' : 'visible';
            } else {
                    obj.style.display = obj.style.display == '' ? 'none' : '';
            }
    }

21、原生JavaScript中有insertBefore方法,可惜卻沒有insertAfter方法?用如下函數實現

    function insertAfter(newChild,refChild){
            var parElem=refChild.parentNode;
            if(parElem.lastChild==refChild){
                    refChild.appendChild(newChild);
            }else{
                    parElem.insertBefore(newChild,refChild.nextSibling);
            }
    }

22、原生JavaScript中兼容瀏覽器綁定元素事件

    function addEventSamp(obj,evt,fn){
            if (obj.addEventListener) {
                    obj.addEventListener(evt, fn, false);
            }else if(obj.attachEvent){
                    obj.attachEvent('on'+evt,fn);
            }
    }

23、原生JavaScript光標停在文字的後面,文本框獲得焦點時調用

    function focusLast(){
            var e = event.srcElement;
            var r =e.createTextRange();
            r.moveStart('character',e.value.length);
            r.collapse(true);
            r.select();
    }

24、原生JavaScript檢驗URL鏈接是否有效

    function getUrlState(URL){
            var xmlhttp = new ActiveXObject("microsoft.xmlhttp");
            xmlhttp.Open("GET",URL, false);
            try{
                    xmlhttp.Send();
            }catch(e){
            }finally{
                    var result = xmlhttp.responseText;
                    if(result){
                            if(xmlhttp.Status==200){
                                    return(true);
                            }else{
                                    return(false);
                            }
                    }else{
                            return(false);
                    }
            }
    }

25、原生JavaScript格式化CSS樣式代碼

    function formatCss(s){//格式化代碼
            s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
            s = s.replace(/;\s*;/g, ";"); //清除連續分號
            s = s.replace(/\,[\s\.\#\d]*{/g, "{");
            s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2");
            s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2");
            s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2");
            return s;
    }

26、原生JavaScript壓縮CSS樣式代碼

    function yasuoCss (s) {//壓縮代碼
            s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //刪除註釋
            s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");
            s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容錯處理
            s = s.replace(/;\s*;/g, ";"); //清除連續分號
            s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白
            return (s == null) ? "" : s[1];
    }

27、原生JavaScript獲取當前路徑

    var currentPageUrl = "";
    if (typeof this.href === "undefined") {
        currentPageUrl = document.location.toString().toLowerCase();
    }
    else {
        currentPageUrl = this.href.toString().toLowerCase();
    }

28、原生JavaScriptIP轉成整型

    function _ip2int(ip){
        var num = 0;
        ip = ip.split(".");
        num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);
        num = num >>> 0;
        return num;
    }

29、原生JavaScript整型解析為IP地址

    function _int2iP(num){
        var str;
        var tt = new Array();
        tt[0] = (num >>> 24) >>> 0;
        tt[1] = ((num << 8) >>> 24) >>> 0;
        tt[2] = (num << 16) >>> 24;
        tt[3] = (num << 24) >>> 24;
        str = String(tt[0]) + "." + String(tt[1]) + "." + String(tt[2]) + "." + String(tt[3]);
        return str;
    }

30、原生JavaScript實現checkbox全選與全不選

    function checkAll() {
            var selectall = document.getElementById("selectall");
            var allbox = document.getElementsByName("allbox");
            if (selectall.checked) {
                    for (var i = 0; i < allbox.length; i++) {
                            allbox.checked = true;
                    }
            } else {
                    for (var i = 0; i < allbox.length; i++) {
                            allbox.checked = false;
                    }
            }
    }

31、原生] JavaScript判斷是否移動設備

    function isMobile(){
            if (typeof this._isMobile === 'boolean'){
                    return this._isMobile;
            }
            var screenWidth = this.getScreenWidth();
            var fixViewPortsExperiment = rendererModel.runningExperiments.FixViewport || rendererModel.runningExperiments.fixviewport;
            var fixViewPortsExperimentRunning = fixViewPortsExperiment && (fixViewPortsExperiment.toLowerCase() === "new");
            if(!fixViewPortsExperiment){
                    if(!this.isAppleMobileDevice()){
                            screenWidth = screenWidth/window.devicePixelRatio;
                    }
            }
            var isMobileScreenSize = screenWidth < 600;
            var isMobileUserAgent = false;
            this._isMobile = isMobileScreenSize && this.isTouchScreen();
            return this._isMobile;
    }

32、原生JavaScript判斷是否移動設備訪問

    function isAppleMobileDevice(){
            return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));
    }

33、原生JavaScript判斷是否蘋果移動設備訪問

    function isAppleMobileDevice(){
            return (/iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()));
    }

34、原生JavaScript判斷是否安卓移動設備訪問

    function isAndroidMobileDevice(){
            return (/android/i.test(navigator.userAgent.toLowerCase()));
    }

35、原生JavaScript判斷是否Touch屏幕

    function isTouchScreen(){
            return (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch);
    }

from http://developer.51cto.com/art/201312/425414.htm
Free Web Hosting