JavaScript能否代替我按下回车键?

8

我想在离开时继续访问一个网站。是否可以做到像这样:

setInterval(function(){
    //have javascript press the button with a certain id
},100);

我在考虑将其放入智能搜索栏中,以便运行代码。

除非您使用 XSS(跨站点脚本)注入代码的方法,否则我认为您将无法完成它。 - R4nc1d
1
@Jacques:在这种情况下,这很简单:您只需打开Web控制台并键入即可。该代码在您查看的页面相同的环境中运行。 - T.J. Crowder
@T.J.Crowder,你说得对,我从没想过那个问题。在那种情况下,我猜这是可能的。 - R4nc1d
1个回答

13

按下回车键会触发一个事件。您需要确定他们正在侦听哪个事件监听器。我将在以下示例中使用 keyup

假设 el 是您想要在其上按下回车键的元素的变量。我不确定您如何获取该元素,但我相信您知道。

var evt = new CustomEvent('keyup');
evt.which = 13;
evt.keyCode = 13;
el.dispatchEvent(evt); //This would trigger the event listener.

没有任何办法可以真正模拟硬件操作。它只是触发事件监听器。

例如,调用el.click()只是调用事件监听器的回调函数,而不是实际按下键。

因此,当您向元素添加事件监听器时,第一个参数是event对象。

el.addEventListener('keyup', function(event) {
   //Do Something
});

dispatchEventel上被调用时,event等同于evt

如果程序员使用了:

el.onkeyup = function(event) {
  //do whatever.
}

这其实很简单。

只需要调用el.onkeyup(evt);

因为onkeyup是一个函数。

我为什么使用CustomEvent而不是KeyboardEvent,是因为new KeyboardEvent('keyup') 返回的对象具有属性whichkeyCode,无法在不使用Object.definePropertyObject.defineProperties的情况下重写。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接