Javascript &引用;选项卡“已渲染”;MDL选项卡的事件

Javascript &引用;选项卡“已渲染”;MDL选项卡的事件,javascript,material-design-lite,Javascript,Material Design Lite,我正在使用MDL选项卡组件。单击某个选项卡并显示该选项卡的内容后,我想在该选项卡内容中的特定文本输入中设置光标焦点 我最初的方法只是处理tab元素的click事件,然后相应地设置焦点。我遇到的问题是,对文本输入元素调用.focus()无效,因为它试图在文本元素实际可见之前设置焦点,这似乎没有浏览器愿意为您这样做。如果我在setTimeout()延迟内设置焦点,它会工作,但这并不是一个非常干净的方法 单击选项卡并完成其内容显示时,是否有任何类型的事件可以处理?我还研究了使用变异观察者来检测文本输入

我正在使用MDL选项卡组件。单击某个选项卡并显示该选项卡的内容后,我想在该选项卡内容中的特定文本输入中设置光标焦点

我最初的方法只是处理tab元素的click事件,然后相应地设置焦点。我遇到的问题是,对文本输入元素调用.focus()无效,因为它试图在文本元素实际可见之前设置焦点,这似乎没有浏览器愿意为您这样做。如果我在setTimeout()延迟内设置焦点,它会工作,但这并不是一个非常干净的方法


单击选项卡并完成其内容显示时,是否有任何类型的事件可以处理?我还研究了使用变异观察者来检测文本输入元素何时可见,但浏览器对这些元素的支持仍然相当有限。

不,没有这样的选项。我认为您必须使用setTimeout或setInterval

你可以查一下来源。也许可以编写自己的MaterialTables构造函数并注册它

我认为还有一些lib可以像jQuery那样实现这一点。你也可以看到


这只适用于现代浏览器,但有一个传统的实现。

不,没有这样的选项。我认为您必须使用setTimeout或setInterval

你可以查一下来源。也许可以编写自己的MaterialTables构造函数并注册它

我认为还有一些lib可以像jQuery那样实现这一点。你也可以看到

这只适用于现代浏览器,但有一个传统的实现。

我添加了这一行:
window.dispatchEvent(新事件(“tabSelected”)
到material.js文件,在
selectTab()函数的末尾。这样,在显示选项卡内容后立即触发事件。

我添加了这一行:
window.dispatchEvent(新事件(“tabSelected”)

到material.js文件,在
selectTab()函数的末尾。这样,在显示选项卡内容后立即触发事件。

我发现tartinesKiller很有趣。如果按照Christian Steinmann的建议使用timeout,您会在这个线程中找到一段代码。请注意,即使超时0毫秒也足以使选项卡内容可见。我觉得鞑靼人很有趣。如果按照Christian Steinmann的建议使用timeout,您会在这个线程中找到一段代码。请注意,即使超时0毫秒也足以使选项卡内容可见。