相关疑难解决方法(0)

在JavaScript中触发键盘事件

我正在尝试使用JavaScript在Safari中模拟键盘事件.

我试过这个:

var event = document.createEvent("KeyboardEvent");
event.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 115, 0);
Run Code Online (Sandbox Code Playgroud)

......还有这个:

var event = document.createEvent("UIEvents");
event.initUIEvent("keypress", true, true, window, 1);
event.keyCode = 115;
Run Code Online (Sandbox Code Playgroud)

但是,在尝试这两种方法之后,我遇到了同样的问题:在执行代码之后,事件对象的keyCode/ whichproperties设置为0,而不是115.

有谁知道如何在Safari中可靠地创建和发送键盘事件?(如果可能的话,我宁愿用纯JavaScript实现它.)

javascript safari webkit keyboard-events dom-events

73
推荐指数
4
解决办法
16万
查看次数

如何使用JavaScript模拟按键或单击?

我写了一个谷歌浏览器扩展程序,我想要使用我的扩展程序的网站要求我点击或标签到文本框(因为我认为它只运行javaScript验证"onClick").我可以使用我的扩展程序在框中获取文本:

document.getElementById("input1").value = 'test';
Run Code Online (Sandbox Code Playgroud)

但是当我点击提交时,它认为我没有在"input1"文本框中输入任何内容,因为我从未点击过它或在其上打勾.

有人可以帮我解决这个问题吗?

javascript google-chrome google-chrome-extension

40
推荐指数
4
解决办法
11万
查看次数

Chrome for Android中的keycode始终为零

我需要在我的网站上检测自定义搜索框的密钥代码,但在Chrome for Android上密钥代码总是返回零(退格区除外,返回8).有没有其他人经历过这一点,你是如何解决它的?我们的网站适用于除Chrome for Android以外的所有移动浏览器,因为我们无法检测到非零键码或字码.

我在Android 4.1.2 Jelly Bean上运行Chrome 27.0.1453.90.这个问题可以通过以下简单方法重复:
alert(event.keyCode);

javascript google-chrome keycode javascript-events

31
推荐指数
2
解决办法
2万
查看次数

Chrome中的Keydown Simulation通常会触发,但不会触发正确的键

我想在html页面中模拟给定textarea元素上的keydown事件.因为我正在使用chrome,所以我调用initKeyboardEvent了我的变量,并将我想要输入的keyCode传递给了textarea.这是我尝试过的:

var keyEvent = document.createEvent('KeyboardEvent');
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
inputNode.dispatchEvent(keyEvent);
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我正在键入字母,m但textarea只获取keyCode 13,这是Enter键.所以,我尝试了一个我在网上看到的覆盖代码,它将值设置为keyCodeVal,但没有成功

var keyEvent = document.createEvent('KeyboardEvent');
Object.defineProperty(keyEvent, 'keyCode', { 
                         get : function() {
                                 return this.keyCodeVal;
                         }
                        });
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
keyEvent.keyCodeVal = 77;
inputNode.dispatchEvent(keyEvent);
Run Code Online (Sandbox Code Playgroud)

有谁知道如何设置keyCode值?

javascript google-chrome javascript-events

27
推荐指数
2
解决办法
5万
查看次数

在Chrome上触发键盘事件

我正在尝试使用Chrome上的javascript将键盘事件发送到页面.我有一个曾经在Firefox上工作的方法:

pressKey = function(key, shift) {
  var evt = document.createEvent('KeyboardEvent');
  evt.initKeyEvent("keypress", false, true, null, false, false,
                   shift, false, keyCode(key), key.charCodeAt(0));
  document.dispatchEvent(evt);
}
Run Code Online (Sandbox Code Playgroud)

其中key是所需的键,keyCode将小写字母更改为高位字母,并调用charCodeAt().

我的问题是Safari/Chrome上的事件没有initKeyEvent,而是initKeyboardEvent.我可以注意到的主要区别是你必须将密钥作为keyIdentifier(看起来像一个unicode字符)传递,而不是传递keycode和keychar.尽管如此,我仍然无法使其成功.

我也尝试过这里描述的JQuery方法但没有成功.

编辑: 我进一步调试了这一点似乎Chrome上的事件确实触发了侦听器,但keyCode/charCode始终为0.我试图设置evt.keyCode或evt.charCode也没有成功.

javascript webkit google-chrome

26
推荐指数
3
解决办法
4万
查看次数