我制作了这样的自定义组件:
my.Cmp = function(opt_domHelper) {
goog.ui.Component.call(this, opt_domHelper);
...
};
goog.inherits(my.Stamina, goog.ui.Component);
my.Cmp.prototype.createDom = function() {
this.decorateInternal(this.dom_.createDom('div', 'сmp-inner-div'));
};
my.Cmp.prototype.decorateInternal = function(element) {
my.Cmp.superClass_.decorateInternal.call(this, element);
var elem = this.getElement();
...
};
my.Cmp.prototype.disposeInternal = function() {
my.Stamina.superClass_.disposeInternal.call(this);
...
};
my.Cmp.prototype.enterDocument = function() {
...
}
my.Cmp.prototype.exitDocument = function() {
...
}
然后我在 html 文档中创建了一个实例
var cmp = new my.Cmp();
cmp.render(goog.dom.getElement('cmpContainerDivId'));
该组件使用键盘。它在鼠标单击后获得键盘焦点并且工作正常。我找不到如何在页面加载后给予 kb 焦点。我试图从 goog.ui.Control 继承 my.Cmp 组件并使用它的 setFocused 方法。getState() 显示焦点集中,但在单击鼠标或按下 Tab 键之前对 kb 键入没有反应。