键盘事件、拖拽组件

184 阅读1分钟

【键盘事件】

键盘按下的时候触发

 t.onkeydown = function (){

 console.log('键盘我按下了');

 }

连续敲击的时候触发

 t.onkeypress = function (){

 console.log('连续按下键盘并抬起的时候触发');

 }

键盘抬起的时候触发

 t.onkeyup = function (){

 console.log('键盘我抬起了');

 }

 顺序 onkeydown > onkeypress > onkeyup 

【事件的默认行为】

let a = document.querySelector('a');

a.onclick = function (e){

 取消默认事件 两种方法 

this.style.background = 'red'

 return false

 事件源对象里面的取消默认事件的方法 

 e.preventDefault(); }

这两种禁用方式的区别是

return false会阻止下面代码的执行 方法已经结束了

e.preventDefault()不会阻止下面代码执行 

鼠标点击的位置

div1.onclick = function (e){

 鼠标在文档(是文档document不是div1)的X轴的位置 

console.log(e.clientX);

 鼠标在文档(是文档document不是div1)的Y轴的位置 

console.log(e.clientY);

}

【拖拽组件】

div1.onmousedown = function (e){

 按下的时候 获取点的位置 到盒子边界距离 

let areaX = e.clientX - div1.offsetLeft;

let areaY = e.clientY - div1.offsetTop;

document.onmousemove = function (e){

 移动的时候获取的client的动态距离 - 盒子内点的到边缘的固定距离 

最后获得的 就是 盒子到文档的距离 

div1.style.left = e.clientX - areaX + 'px'

div1.style.top = e.clientY - areaY + 'px'

}

}

div1.onmouseup = function (){

document.onmousemove = null;

}

用户界面事件,script在页面前面

当整个页面被加载完成(包括img图片也完全加载完毕)的时候调用 

window.onload = function () {

 因为执行js获取dom的时候 元素还没加载 所以获取不到 

let div1 = document.getElementById('div1')

div1.onclick = function (e){

console.log(e.target.innerText);

}

// console.log(div1.innerHTML);

}

 当页面尺寸发生变化的时候 dom文档已经加载完毕了 

window.onresize = function () {

console.log('页面尺寸改变了');

document.getElementById('div1').style.background='red'

}