WebKit 内核浏览器 initKeyboardEvent 函数原型
学习JS发送自定义键盘(KeyboardEvent)事件的过程中,遇到了一个小难题:单个按键Tab可以正常发送,焦点能够转移到下一个元素,但想实现Shift+Tab,反向移动焦点时,却被DOM3的浏览器兼容性问题难到了。
- 根据参考资料1(浅谈Javascript事件模拟 - Mr_BackKom - 博客园 )的方法,行不通,因为我的浏览器是在Webkit核心下。
- 再找参考资料2(Document Object Model Events #Events-KeyboardEvent),了解了DOM3中的 KeyboardEvent.initKeyboardEvent 函数的定义如下:
void initKeyboardEvent(in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in views::AbstractView viewArg, in DOMString keyIdentifierArg, in unsigned long keyLocationArg, in DOMString modifiersList);
根据资料1的经验,使用DOM3标准来调用,结果还是失败。
- 无奈之下,只好下载Webkit源代码直接寻找该核心实现的源代码函数原型,结果如下:
void KeyboardEvent::initKeyboardEvent(const AtomicString& type, bool canBubble, bool cancelable, AbstractView* view,const String &keyIdentifier, unsigned location,bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, bool altGraphKey) {if (dispatched())return;initUIEvent(type, canBubble, cancelable, view, 0);m_keyIdentifier = keyIdentifier;m_location = location;m_ctrlKey = ctrlKey;m_shiftKey = shiftKey;m_altKey = altKey;m_metaKey = metaKey;m_altGraphKey = altGraphKey; }
按此原型再次调用,终于成功!(PS:开源就是好啊!)
模拟Shift+Tab代码如下:
var evt = document.createEvent("KeyboardEvent"); evt.initKeyboardEvent("keydown", true, false, window, 'U+0009',0,false,false,true,false,false); e.currentTarget.dispatchEvent(evt);
By:Asion Tang
AT:2013年9月20日 23:58:40
转载于:https://www.cnblogs.com/AsionTang/p/3330917.html
WebKit 内核浏览器 initKeyboardEvent 函数原型相关推荐
- 八大Webkit内核浏览器
列举出时下最流行的Webkit内核浏览器,所以我们并不会做出评测和对比. PS:本文列举的浏览器有一部分为IE+Webkit双核浏览器,如果您对其他IE内核浏览器很感兴趣<抛弃数据!用体验和感觉 ...
- C# webkit 内核浏览器 访问https网站 显示空白或者提示 Problem with the SSL CA cert (path? access rights?)
如题 解决方法: 安装中文路径,经常 出现问题.改下安装路径. 只需要动态链接库所在路径上没有中文字符,webkit内核浏览器就可以访问https网址. 转自:C# webkit 内核浏览器 访问ht ...
- webkit内核 css,纯CSS改变webkit内核浏览器的滚动条样式
基于webkit的浏览器现在可以自定义其滚动条的样式了,实现代码如下: 复制代码代码如下: ::-webkit-scrollbar/*整体部分*/ { width: 10px; height:10px ...
- -webkit-gradient webkit内核浏览器的Linear Gradients (线性渐变) -Css3演示
webkit内核的safari. Chrome的Linear Gradients (线性渐变)的几点说明及演示: webkit内核的safari. Chrome的Linear Gradients (线 ...
- webkit内核浏览器的CSS写法
-webkit-tap-highlight-color: transparent; Mobile上点击链接高亮的时候设置颜色为透明 -webkit-user-select: none; 设置为无法选择 ...
- 修改webkit内核浏览器滚动条样式(修改element-ui table样式)
webkit浏览器css设置滚动条主要有下面7个属性 1. ::-webkit-scrollbar 滚动条整体部分,可以设置宽度啥的 2. ::-webkit-scrollbar-button 滚动条 ...
- 开源浏览器引擎Webkit引发浏览器格局变化
几乎一夜之间,原本采用IE核心的国产浏览器纷纷上马双核心,也让Webkit这个本不为大众熟知的技术术语走向前台.国产浏览器为何青睐Webkit?Webkit又会为竞争激烈的浏览器市场带来什么样的变化? ...
- Windows上使用CEF嵌入基于chrome内核浏览器小例
原文地址::https://blog.csdn.net/mfcing/article/details/43953433?utm_source=distribute.pc_relevant.none-t ...
- 【转】C# 开发Chrome内核浏览器(WebKit.net)
WebKit.net是对WebKit的.Net封装,使用它.net程序可以非常方便的集成和使用webkit作为加载网页的容器.这里介绍一下怎么用它来显示一个网页这样的一个最简单的功能. 第一步: 下载 ...
最新文章
- jQuery ajax 传递JSON数组到Spring Controller
- java synchronized 参数_个人对synchronized锁的参数理解,如果有误望指出
- asp.net关于kindeditor 上传图片出现服务器故障的解决办法
- 【PC工具】如何简单粗暴无脑的解方程
- QoE驱动的端到端视频直播技术演进
- AlexNet 和 VGG-Net的区别
- 浅谈 Spring 框架注解的用法分析
- COJ1196(Staginner 去爬山)
- java - 水仙花数
- Ubuntu(Deepin)搭建Android开发环境(Android Studio)
- 照葫芦画瓢之老男孩购物车程序
- 也许,这会是一个好的开始
- docker安装oracle11g史上最全步骤(带图文)
- 线性回归(一):一元线性回归(附python实现)
- 基于OpenCV的PHP图像人脸检测识别…
- 华为虚拟化usb服务器,华为FusionComputer服务器虚拟化完美解决方案
- android接入facebook登陆
- 使用es6模块化出现Access to script at 'file:///... ..from origin 'null' has been blocked。。。错误
- 技巧篇:常用的R代码汇总
- 语音唤醒真香警告,轻松开启与Siri、小度和小爱的畅聊
热门文章
- python编写代码实现文件的拷贝功能_python利用os模块编写文件复制功能——copy()函数用法...
- cheatengine找不到数值_浙江工程勘察资质找谁代办(圆你资质梦)
- java shell排序_八大排序算法——希尔(shell)排序
- php批量解析json,封装php类批量解析css成json格式_html/css_WEB-ITnose
- C++socket编程(九):9.1 UDP实战Syslog服务器
- java弱口令生成1001无标题,教你批量生成自动发卡平台需要的卡密数据
- mysql ignore space_MySQL日志存储空间满引发的错误
- nextcloud如何填写数据库_NextCloud安装使用心得记录
- uwp post php,window_Win10开发系列专题五 UWP应用添加画布及语音输入支持,这是微软Win10十个开发系列专 - phpStudy...
- go语言 recover