用jquery 和 jquery.simulate.js 实现模拟键盘事件,点击上下左右div相当于点击键盘的上下左右键

<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title></title>
<style type="text/css">
#box {
width: 50px;
height: 50px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background: lightskyblue;
}
.box-wrapper {
width: 100px;
height: 100px;
position: fixed;
bottom: 0;
left: 0;
background: blue;
}
.box {
float: left;
background-color: orange;
font-size: 30px;
width: 50px;
text-align: center;
height: 50px;
}
.box:nth-child(1){
background-color: pink;
}
.box:nth-child(4){
background-color: blueviolet;
}
</style>
</head>
<script type="text/javascript">
window.onload = function() {
var box1 = document.getElementById("box");
document.onkeydown = function(event) {
event = event || window.event; /*||为或语句,当IE不能识别event时候,就执行window.event 赋值*/
console.log(event.keyCode);
switch(event.keyCode) { /*keyCode:字母和数字键的键码值*/
/*37、38、39、40分别对应左上右下*/
case 37:
box1.style.left = box1.offsetLeft - 10 + "px"; /*图形左移*/
break;
case 38:
box1.style.top = box1.offsetTop - 10 + "px"; /*图形上移*/
break;
case 39:
// alert("你点击了右键");
// alert(box1.offsetLeft + 10 + "px");
box1.style.left = box1.offsetLeft + 10 + "px"; /*图形右移*/
break;
case 40:
box1.style.top = box1.offsetTop + 10 + "px"; /*图形下移*/
break;
}
}
}
</script> <body>
<div id="box"> </div>
<div class="box-wrapper">
<div class="box" ontouchend="arrow_click(2,'up')" ontouchstart="arrow_click(1,'up')">

</div>
<div class="box" ontouchend="arrow_click(2,'down')" ontouchstart="arrow_click(1,'down')">

</div>
<div class="box" ontouchend="arrow_click(2,'left')" ontouchstart="arrow_click(1,'left')">

</div>
<div class="box" ontouchend="arrow_click(2,'right')" ontouchstart="arrow_click(1,'right')">

</div>
</div> </body>
<script src="jq3.1.1.js" type="text/javascript" charset="utf-8"></script>
<script src="jquery.simulate.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
function arrow_click(k_type, type) {
var t = jQuery.simulate.keyCode;
var e = $('#box');
var k_event = k_type == 1 ? 'keydown' : 'keyup';
switch(type) {
case 'right':
$(e).simulate(k_event, {
keyCode: t.RIGHT
});
break;
case 'left':
$(e).simulate(k_event, {
keyCode: t.LEFT
});
break;
case 'up':
$(e).simulate(k_event, {
keyCode: t.UP
});
break;
case 'down':
$(e).simulate(k_event, {
keyCode: t.DOWN
});
break;
case 'space':
$(e).simulate(k_event, {
keyCode: t.SPACE
});
break;
}
}
</script> </html>

初识 jquery.simulate.js 模拟键盘事件的更多相关文章

  1. JS模拟键盘事件 -- 原理及小例子

    提问: 键盘默认事件,比如tab切换,alt+f4关闭,ctrl+t新建等,如果不想通过键盘而是一些按钮点击来触发这些功能,该咋办呢? 例子: 先以tab为例上一个小例子: <!DOCTYPE ...

  2. js模拟键盘事件

    <!DOCTYPE html> <html> <head lang="zh-CN"> <meta charset="UTF-8& ...

  3. JavaScript 模拟键盘事件

    JavaScript 模拟键盘事件和鼠标事件(比如模拟按下回车等) 2016年09月08日 15:23:25 神秘_博士 阅读数:41158 标签: javascript鼠标键盘事件模拟更多 个人分类 ...

  4. selenium 模拟键盘事件 复制粘贴、右键、回车等

    #coding=utf-8 ''' selenium ''' from selenium import webdriver as wd import time bc=wd.Chrome(executa ...

  5. 使用jquery模拟键盘事件,但window系统并不会真的响应事件,只是浏览器当前页面会响应而已

    <!DOCTYPE html> <html> <head> <title>Demo</title> <meta http-equiv= ...

  6. js模拟触发事件

     html标签元素封装着实用的[事件],但在很多时候,需要[模拟触发事件],比如 [按钮单机事件]  可以实实在在点击按钮触发该事件,但体验而言,很多时候需要js逻辑处理让实现 触发事件的效果这时就用 ...

  7. [原创]Javascript 利用mousetrap.js进行键盘事件操作

    我们日常开发中,会遇到js的键盘操作,例如回车提交表单之类的.或者按下某个键执行某个方法.无意中发现一个大小不到4K的js文件,它非常方便的操作键盘事件. 自己也尝试了一下:具体代码如下: 详情可以去 ...

  8. js浏览器键盘事件控制(转自新浪微博)

    js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...

  9. JS获取键盘事件

    <script type="text/javascript" language=JavaScript charset="UTF-8"> docume ...

随机推荐

  1. selenium登录网银,密码控件输入

    尝试登录农行网银,发现带控件的密码输入框怎么都无法输入啊 最后用虚拟键盘实现的  , DD模拟键盘 http://www.ddxoft.com/ 图形验证码识别没过,有时间再继续 需要安装  Tess ...

  2. C++ sizeof 运算符

    sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小. sizeof 运算符可用于获取类.结构.共用体和其他用户自定义数据类型的大小. 使用 sizeof 的语法如下: ...

  3. UITextView实现PlaceHolder的方式

    实现UITextView实现PlaceHolder的方式的方式有两种,这两种方法的核心就是通过通知来添加和去除PlaceHolder:下面来介绍两种方法:个人比较喜欢第一种,看起来更加合理. 方法1: ...

  4. Java虚拟机内存划分

    Java虚拟机在执行Java程序时,会把它管理的内存划分为若干个不同的数据区.这些区域有不同的特性,起不同的作用.它们有各自的创建时间,销毁时间.有的区域随着进程的启动而创建,随着进程结束而销毁,有的 ...

  5. django框架进阶-AJAX-长期维护

    ##################   预备知识---json     ####################### 预备知识,json 什么是json?这是一种数据格式,和语言没有关系, 为什么 ...

  6. CF-1114C-Trailing Loves (or L'oeufs?)

    题意: 输入n和m,求n!转换成m进制之后末尾有多少个0: 思路: 转换一下题意就可以看成,将n表示成x * (m ^ y),求y的最大值.^表示次方而不是异或: 这就比较好想了,将m分解质因数,对于 ...

  7. 吴裕雄--天生自然HTML学习笔记:HTML 标题

    在 HTML 文档中,标题很重要. HTML 标题 标题(Heading)是通过 <h1> - <h6> 标签进行定义的. <h1> 定义最大的标题. <h6 ...

  8. POJ 2728 二分+最小生成树

    题意:给n个点,可以将每个点的x,y的欧几里得距离(就是坐标系里两点距离公式)看作距离,z的差值即为费用差,求的是所有最小生成树中的min(边费用和/边距离和). 思路:其实挑战P143有类似的列题, ...

  9. js中对Object对象的一些常用操作总结

    前言我前面的文章,写过js中“类”与继承的一些文章.ES5我们可以通过 构造函数 或者 Object.create()等方式来模拟出js中的“类”,当然,对象呢是类的实例化,我们可以通过如下方式创建对 ...

  10. 关于JS对象原型prototype与继承,ES6的class和extends · kesheng's personal blog

    传统方式:通过function关键字来定义一个对象类型 1234567891011 function People(name) { this.name = name}People.prototype. ...