Javascript 聚合物焦点()必须包装在setTimeout()中才能工作?

Javascript 聚合物焦点()必须包装在setTimeout()中才能工作?,javascript,polymer,polymer-1.0,Javascript,Polymer,Polymer 1.0,当我试图把焦点放在一个聚合物元素上时,我总是要把它包装在一个套印中,在这种情况下,它是一个聚合物纸张输入元素。像这样: setTimeout(function() { paperInput.focus(); }, 10); 我读过关于focus()聚合物元素的不同的Stackoverflow帖子,我发现其中一些也有同样的问题。 我真的不能接受这样一个事实,那就是当我包装它的时候它就工作了。我想知道为什么当我不包装它的时候它就不工作了 所以我的问题是,为什么?为什么我必须用setTime

当我试图把焦点放在一个聚合物元素上时,我总是要把它包装在一个套印中,在这种情况下,它是一个聚合物
纸张输入
元素。像这样:

setTimeout(function() {
   paperInput.focus(); 
}, 10);
我读过关于focus()聚合物元素的不同的Stackoverflow帖子,我发现其中一些也有同样的问题。 我真的不能接受这样一个事实,那就是当我包装它的时候它就工作了。我想知道为什么当我不包装它的时候它就不工作了

所以我的问题是,为什么?为什么我必须用
setTimeout
来包装它

目前使用聚合物1.4。但我在旧版本中也注意到了同样的行为

谢谢

更新

我试图重现这个问题,但这确实有效。所以我敢打赌问题出在我自己的环境中:

如果我找到了解决问题的方法,我会不断更新这篇文章。
感谢您的帮助。

在简单的情况下,页面上除了
之外没有其他元素,因此
焦点()似乎没有问题


HTMLImports.whenReady(函数(){
document.getElementById('my-input').focus();
});

一个有趣的问题,但如果不了解此代码在应用程序中的位置以及包含
纸质输入的组件的外观,则很难判断。你能创建一个Plunk来复制吗?嗯,我看看我能不能在Plunk中复制这个。希望在今天晚些时候的更新中发布。在我使用Polymer 1.4.0进行的测试中,
setTimeout
不需要使用
focus()
。我同意我们需要查看您的代码来帮助解决您的bug。你能更新你的问题以包含SO帖子的链接吗?@JonathanAndersson我能重现这个问题。@tony19 AAA谢谢。昨天没有时间做这件事。事实上,如果你改变
这个。$['my-input'].focus()
this.$['my-input'].$.input.focus(),输入将正确聚焦。您只需在
输入中直接调用focus()方法,该方法在这个漂亮的片段@tony19中仍然不起作用。我的问题不在ready回调中。当所有组件准备就绪,用户按下按钮将焦点切换到纸张输入时,就会出现问题。这个剂量有效。所以我很难复制它。(在可编辑的内容中按B键切换焦点)