原创!转载清注明出自http://blog.csdn.net/lichwei1983
chromium 33
1 支持焦点
W3C规定,只有web page明确设置了tabIndex的Element才定义为支持焦点,他是这么定义一个Node是否支持焦点的:
bool Element::supportsFocus() const
{
return hasRareData() && elementRareData()->tabIndexSetExplicitly();
}
2 可被设置焦点
首先,Element必须支持焦点,其次,此Element的render对象RenderBox必须存在,而且此RenderBox的style属性设置为
可见
bool Element::isFocusable() const
{
return inDocument() && supportsFocus() && !isInert() && rendererIsFocusable();
}
3 按键可获取焦点
一个Element能否获取焦点,取决于:
1)自己“可被设置焦点”
2)tabIndex是正整数
bool Element::isKeyboardFocusable() const
{
return isFocusable() && tabIndex() >= 0;
}
4 鼠标可获取焦点
只需要判断“可被获取焦点”就行了:
bool Node::isMouseFocusable() const
{
return isFocusable();
}
return true;
}
3 按键可获取焦点
一个Element能否获取焦点,取决于:
1)自己“可被设置焦点”
2)tabIndex是正整数
bool Node::isKeyboardFocusable(KeyboardEvent*) const
{
return isFocusable() && tabIndex() >= 0;
}
4 鼠标可获取焦点
只需要判断“可被获取焦点”就行了:
bool Node::isMouseFocusable() const
{
return isFocusable();
}