1

我非常了解浏览器的标准事件触发机制,但我需要一个 JavaScript 库来模拟通过键盘进行光标和插入点导航。特别是,我需要一个库,它允许我移动插入点,但如果在使用虚拟箭头键导航时“按下”虚拟 shift 键,也可以处理扩展或折叠文本选择范围。这样的跨浏览器 JavaScript 库是否存在?

这旨在用于浏览器自动化库,因此像 Selenium 这样的建议是不合适的。此外,如果可能的话,我想避免依赖于大型 JavaScript 框架(如 jQuery)的库。最后,这需要在页面中注入,因此非 JavaScript 解决方案无法满足我的要求。

假设我有一个看起来像这样的 HTML 页面:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>keyboard</title>
</head>
<body>
  <input id="editor" value="hello world" />
</body>
</html>

我希望能够在 JavaScript 中调用如下内容:

function moveCursor() {
  var editor = document.getElementById("editor");
  editor.focus();

  // Hypothetical API here. This would need to be
  // adjusted to be used with the actual library.
  // Assume the pressKey() is defined as:
  //
  //   pressKey(element, keyCode, isShiftPressed)
  //
  keyboardSimulator.pressKey(editor, keys.END);
  keyboardSimulator.pressKey(editor, keys.LEFT, true);
  keyboardSimulator.pressKey(editor, keys.LEFT, true); 
}

调用此 JavaScript 函数后,我希望页面中的焦点位于编辑器元素上,并且选择“hello world”值中的“ld”。

4

2 回答 2

1

实际上有一些图书馆可以做这些事情。

其中之一称为 Syn,并包含在 bitovi FuncUnit 中:

http://funcunit.com

https://github.com/bitovi/syn

于 2014-03-15T14:02:18.063 回答
0

不存在这样的库。如果真的允许,这将是一个巨大的安全漏洞。您唯一能做的就是捕获击键并对其进行操作,例如创建特殊热键,当捕获时触发您在 javascript 中创建的某些特殊功能。

(顺便说一句:一些扩展,如 Lastpass 和 Lazarus 似乎将击键发送到控件,实际上只是设置了 text 属性。)

于 2012-09-14T15:21:22.860 回答