Js常用函数和问题
Js常用函数和问题
函数
getCurKeyCode
=====================
得到输入的keyCod
=====================e
$(document).on("keyup", "input", function(evt){
console.log(evt.keyCode)
})
* 在微信中浏览器不支持keyCode,得到的keyCode都等于0;
getCaretPosition
====================
得到当前输入位置
====================
function doGetCaretPosition (oField) {
// Initialize
var iCaretPos = 0;
// IE Support
if (document.selection) {
// Set focus on the element
oField.focus();
// To get cursor position, get empty selection range
var oSel = document.selection.createRange();
// Move selection start to 0 position
oSel.moveStart('character', -oField.value.length);
// The caret position is selection length
iCaretPos = oSel.text.length;
}
// Firefox support
else if (oField.selectionStart || oField.selectionStart == '0') {
iCaretPos = oField.selectionStart;
if (isNaN(iCaretPos)) {
iCaretPos = 0
}
}
return iCaretPos;
}
getOrSetCookie
function getOrSetCookie(){
var fn = $.fn.cookie;
if ($.hasOwnProperty("cookie")) {
fn = $.cookie;
}
if(arguments.length == 1) {
return fn(name);
}
fn(name, value, expire);
}
* 兼容jquery 或者 zepto-cookie的cookie处理
Q&A
- js变量一直变化?
js中变量是引用,如果一个变量,则如果别的地方改变了这个值,也会发生改变。只有 + 或者 concat才会进行深度复制;
- js事件绑定的先后顺序?
如果一个dom元素上绑定多个监听事件,则会根据绑定的先后顺序进行函数处理。当然有的地方不是,存在addEvent和addEventListener,目前主要是先绑定先处理;在react上,首先会处理id,然后处理虚拟元素上的onClick。
- cookie 需要设置path吗?会感染吗?
设置cookie时,默认如果不写expires,则expires为session,不断开连接;而默认不写path,则为当前主目录,如果是/m 或者 /。 删除cookie时,path必须一致,否则无法删除cookie。 $.cookie("name","", {expires:-1, path:"/"}); $.cookie("name","ok",{path:"/"})
- js中为什么有时候用that来替代this指针?
如何在事件响应中,如 $('#inputPhone').onClick(function(){ 当前的this指针指向$('#inputPhone),即该jquery对象 }) 如果该处理在一个封装体内,则如果需要调用封装体的函数,则需要用that来提前替代this。