获取当前活动输入字段。Chrome内容脚本。脚本注入。

3

我想做的事情:

如何获取用户当前正在输入的输入字段的值? 我通过Chrome内容脚本将JavaScript注入访问的网站。

我已经尝试过的:

我尝试了alert($('.lastSelected').attr('id'));alert('document.activeElement.value: ' + document.activeElement.value);,但都没有成功。这两种方法都返回undefined

3个回答

4
请看 :focus 选择器。它将选择所有具有焦点的元素。 https://api.jquery.com/focus-selector/ 如果用户正在输入,那么就会发生三个键盘事件之一: keypresskeydownkeyup。要获取聚焦元素的ID,我们可以使用 prop 方法。

$("input").on("keydown", function() {
      alert($(":focus").prop("id"));
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input1" />
<input type="text" id="input2" />


2

setInterval(function () {
  var focus = document.querySelector(":focus");
  document.querySelector("output").textContent = focus ? focus.id : "none";
}, 1000);
<input type=text id="a" />
<input type=text id="b" />
<output></output>


0
没有代码片段的话,准确回答会有些困难。您的代码中是否有任何问题?由于您正在使用Chrome内容脚本,可能会受到CORS问题的阻碍。还有一件事需要考虑,您尝试获取值的字段是在HTML DOM中还是由另一段Javascript创建的?
在Chrome内容脚本文档中提到,您将无法访问来自其他JS代码的变量和对象:
执行环境 内容脚本在一个称为隔离世界的特殊环境中执行。它们可以访问注入的页面的DOM,但不能访问页面创建的任何JavaScript变量或函数。对于每个内容脚本来说,似乎在其运行的页面上没有其他JavaScript正在执行。反之亦然:在页面上运行的JavaScript不能调用由内容脚本定义的任何函数或访问任何变量。 https://developer.chrome.com/extensions/content_scripts 此外,这也可能是一个拼写错误...所以您的代码片段可能会补充您的问题。

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