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

Get currently active input field. Chrome content script. Script injection

本文关键字:脚本 Chrome 字段 注入 输入 活动 获取      更新时间:2023-09-26

我想做的事情:

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

我已经尝试过:

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

查看: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" />

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>

若并没有一段代码,要准确回答就有点复杂。你在我们的代码中得到了什么吗?由于您使用的是Chrome内容脚本,您可能会被CORS问题阻止。另一件需要考虑的事情是,您试图获取值的字段在HTMLDOM中,还是由另一段Javascript创建的?在Chrome内容脚本文档中,它提到您将无法访问来自其他JS代码的变量和对象:

执行环境内容脚本在一个称为孤立世界的特殊环境中执行。他们可以访问被注入页面的DOM,但不能访问页面创建的任何JavaScript变量或函数。它查看每个内容脚本,就好像在它运行的页面上没有其他JavaScript执行一样。反过来也是如此:在页面上运行的JavaScript无法调用任何函数或访问内容脚本定义的任何变量。https://developer.chrome.com/extensions/content_scripts

此外,它可能是一个拼写错误。。。所以你的一段代码可以补充你的问题。