前端技巧记录

1. 获取浏览器厂家

navigator.userAgent

2. 判断是否是数组

function isArray(val) {
    if (!val){return false;}
    return Object.prototype.toString.call(val) === '[object Array]';
}

3. 判断是否是函数

function isFunction(val) {
    if (!val) {return false;}
    return Object.prototype.toString.call(val) === '[object Function]';
}

4. 判断在数组中的位置

function inArray(val, arr) {
    for (var key in arr) {
        if (val === arr[key]) {return i;}
    }
    return -1;
}

5. 去空白字符

function trim(str) {
    return str.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, '');
}

6. 添加单位

function addUnit(val, unit) {
    unit = unit || 'px';
    return val && /^-?\d+(?:\.\d+)?$/.test(val) ? val + unit : val;
}

7. 去除单位

function removeUnit(val) {
    var match;
    return val && (match = /(\d+)/.exec(val)) ? parseInt(match[1], 10) : 0;
}

8. 转驼峰命名形式

function toCamel(str,splitFlag) {
    var arr = str.split(splitFlag ? splitFlag :'-');
    str = '';
    _each(arr, function(key, val) {
        str += (key > 0) ? val.charAt(0).toUpperCase() + val.substr(1) : val;
    });
    return str;
}

9. rgb颜色转十六进制

function toHex(val) {
    function hex(d) {
        var s = parseInt(d, 10).toString(16).toUpperCase();
        return s.length > 1 ? s : '0' + s;
    }
    return val.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig,
        function($0, $1, $2, $3) {
            return '#' + hex($1) + hex($2) + hex($3);
        }
    );
}

10. 转数组

function toArray(obj, offset) {
    return Array.prototype.slice.call(obj, offset || 0);
}

11. 请求路径参数拼装

function addParam(url, param) {
    return url.indexOf('?') >= 0 ? url + '&' + param : url + '?' + param;
}

12. execcommand

官方地址

13. 光标定位

13.1 保存光标位置,其他操作完成后还原

通过documentselection对象来实现,在按钮的点击事件处理程序中,获取当前光标据文档开头的位置(即长度),然后保存,选择了子类型后,根据之前保存的位置还原光标,然后插入图片信息

//记录光标的位置,以备后续还原使用
var LastPos = 0;
//保存当前光标的位置
function SaveCusorPos() {
    //获取编辑器焦点
    var wobj = document.getElementById("myiframe").contentWindow;
    wobj.focus();
    if (document.selection) {
        //ie,利用范围进行计算
        var sText = wobj.document.selection.createRange();
        //清除掉当前选中的内容
        if (sText.htmlText != undefined && sText.htmlText != "") {
            wobj.document.selection.clear();
        }
        //选择当前光标位置到文档开头之间的内容(以字符为单位)
        sText.moveStart('character', -wobj.document.body.innerHTML.toString().length);
        //计算选择内容的长度
        LastPos = sText.text.length + FliterHtmlTag(sText.htmlText) + 1; //; //sText.htmlText.length; //
    }
    else if (wobj.selectionStart || wobj.selectionStart == "0") {
        //firefox,直接读取编辑位置
        LastPos = wobj.selectionStart;
    }
}

你可能感兴趣的:(前端技巧记录)