javascript - 确定 Chrome 中当前 DOM 元素状态

标签 javascript jquery html

如何确定 Chrome 中 textarea 元素(:focus:hover 等)的状态?

就上下文而言,我正在尝试创建一个 Web 应用程序。在上一页提交表单后,新页面的 textarea 自动出现光标,这是我不希望发生的情况。我尝试使用下面的 jQuery 代码,该代码在 Firefox 中有效,但在 Chrome 中无效:

element = $("#elementID");
if (element.is(":focus")) {
    element.blur();
}

在 Chrome 中,代码不会执行 if 语句中的 element.blur()(意味着 if 语句失败)。我已经使用调试器进行了检查,并且 Chrome 中的 id 成功返回了该元素。所以我认为问题出在状态检查语句上。

我认为问题出在元素状态上,我想调查当时的元素状态,最好使用 Chrome 开发者工具。不幸的是,我不知道如何检查当前状态。我只能弄清楚如何检查状态是否等于特定状态。

我四处搜索,但只找到类似 set :hover state 的答案其中讨论如何使用 Chrome 开发工具设置特定状态,而不是如何确定可能是任何状态的当前状态。

我意识到我可以在 JavaScript 中检查此时的每种可能状态,但似乎我缺少检查状态的正确方法。

这是一个 JSFiddle my specific case 。不过,我也有兴趣听到有关确定 textarea 当前状态的一般问题的答案。

感谢您的帮助!

最佳答案

这很可能是操作顺序问题 - 在检测到输入焦点之前执行逻辑。

我在这里重现了这个问题,并通过将代码放入窗口 .load() 来修复它。事件。

var $el = $('textarea');

// will not execute
if ($el.is(':focus')) {
  $el.blur();
  console.log('outside of window load');
}

// will execute
$(window).load(function() {
  if ($el.is(':focus')) {
    $el.blur();
    console.log('inside window load');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<textarea autofocus></textarea>

关于javascript - 确定 Chrome 中当前 DOM 元素状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46254575/

相关文章:

javascript - 在 "area-tag"上结合 jquery 和 css

jquery - 基于网络的移动应用程序的 +1/喜欢/分享按钮

javascript - js 下拉菜单不起作用

Javascript如何听键盘快捷键?

jquery - 如何调整在 CSS 中旋转的元素的大小以适应 IE9 中的新区域?

javascript - 如何避免 javascript "rel"is null 错误?请查看提供的代码

javascript - 通过 PHP 使用 jQuery ajax 函数更新 div 内容

javascript - JSON 在 js 中给出奇怪的格式化结果,我如何访问数据?

javascript - 在 JavaScript 中删除数组内容时规避引用

javascript - IE7 是否错误地报告了 "position"的计算值?