在我正在构建的网站的首页上,有几个<div>
使用CSS:hover
伪类在鼠标悬停在它们上方时添加边框。的其中一个<div>
包含<form>
,如果其中的输入具有焦点,则使用jQuery使用jQuery保留边框。除了IE6不支持s:hover
之外<a>
的任何其他元素,这都可以正常工作。因此,仅对于此浏览器,我们使用jQuery:hover
使用该$(#element).hover()
方法来模仿CSS 。唯一的问题是,现在jQuery同时处理了formfocus()
和hover()
,当输入具有焦点时,用户将鼠标移入和移出,边框就会消失。
我当时以为我们可以使用某种条件阻止这种行为。例如,如果我们在鼠标移出时测试了任何输入是否具有焦点,则可以阻止边框消失。AFAIK,:focus
jQuery中没有选择器,所以我不确定如何实现。有任何想法吗?
jQuery添加了一个:focus
选择器,因此我们不再需要自己添加它。只需使用$("..").is(":focus")
编辑: 随着时代的变化,我们发现更好的方法来测试焦点,新的最爱是BenAlman的要点:
jQuery.expr[':'].focus = function( elem ) {
return elem === document.activeElement && ( elem.type || elem.href );
};
请注意,
(elem.type || elem.href)
已添加测试以过滤掉诸如身体之类的误报。这样,我们确保过滤掉除表单控件和超链接以外的所有元素。
您正在定义一个新的选择器。您可以执行以下操作:
if ($("...").is(":focus")) {
...
}
要么:
$("input:focus").doStuff();
如果您只想找出哪个元素具有焦点,可以使用
$(document.activeElement)
如果不确定版本是否为1.6或更低,则可以添加:focus
缺少的选择器:
(function ( $ ) {
var filters = $.expr[":"];
if ( !filters.focus ) {
filters.focus = function( elem ) {
return elem === document.activeElement && ( elem.type || elem.href );
};
}
})( jQuery );
问题内容: 您如何测试浏览器是否具有焦点? 问题答案: 我尚未在其他浏览器中对此进行过测试,但似乎可以在Webkit中使用。我让您尝试IE。:o) 单击开始间隔后,请更改浏览器窗口的焦点以查看结果更改。同样,仅在Webkit中进行了测试。
问题内容: 我真的很惊讶,我在网上找不到使用Selenium Webdriver测试元素焦点的参考。 我想检查何时尝试提交表单而缺少必填字段时,焦点移到了空白字段。但是我看不到任何使用WebDriver API的方法。 我将能够使用JavascriptExecutor找到关注的元素。但是,阅读FAQ使我认为必须有某种方法可以使用驱动程序本身执行检查。 谢谢你的帮助。 问题答案: 将返回当前的焦点。
问题内容: 是否有可靠的跨浏览器方式来检测选项卡是否具有焦点。 场景是,我们有一个应用程序会定期轮询股票价格,如果页面没有重点关注,我们可以停止轮询并为每个人节省交通噪音,尤其是当人们热衷于打开具有不同投资组合的多个标签时。 是并且为此选择吗? 问题答案: 是的,并且应该适合您的方案: http://www.thefutureoftheweb.com/blog/detect-browser-win
问题内容: 我期待的是类似WebElement.isfocus()的东西,…确实很简单,但是我发现的唯一方法是使用 伪类。 这真的是不常见的任务,例如找不到大量信息吗? 我知道这个SO主题,但是距那时已经快两年了。最新版本中没有新内容吗? 您知道一些解决方法吗? 问题答案: 还有另一个主题涉及这个问题:使用SeleniumWebdriver测试元素是否为焦点 基本上,代码将是
问题内容: 有没有办法断言某个元素(例如输入或链接)具有键盘焦点?我在Selenium中使用Codeception。在http://codeception.com/docs/modules/WebDriver上找不到任何内容 问题答案: 一个可靠的消息来源告诉我这可行: 测试愉快!
问题内容: 我正在尝试为需要用户输入的方法创建一些JUnit测试。被测方法看起来类似于以下方法: 有没有一种方法可以自动将程序传递给int而不是我或其他人在JUnit测试方法中手动执行此操作?像模拟用户输入一样? 提前致谢。 问题答案: 你可以通过调用来用自己的流替换可以是一个字节数组: 通过将IN和OUT作为参数传递,不同的方法可以使此方法更具可测试性: