我正在使用 MDL 选项卡组件。单击选项卡并显示该选项卡的内容后,我想将光标焦点设置在该选项卡内容内的特定文本输入中。
我最初的方法只是处理选项卡元素的单击事件,然后相应地设置焦点。我遇到的问题是,在文本输入元素上调用 .focus() 不起作用,因为它试图在文本元素实际可见之前设置焦点,而浏览器似乎不喜欢为您这样做。如果我将焦点设置在 setTimeout() 延迟内,它会起作用,但这感觉不是一个非常干净的方法。
当单击选项卡并完成显示其内容时,是否可以处理任何类型的事件?我还考虑过使用突变观察器来检测文本输入元素何时可见,但浏览器对这些元素的支持仍然相当有限。
最佳答案
不,没有这样的选项。我认为你必须使用 setTimeout 或 setInterval
你可以查看源码。也许编写您自己的 MaterialTabs 构造函数并注册它。
Material-Design-Lite source, MaterialTab
我认为还有一些库可以像 jQuery 一样做到这一点。您还可以看到
https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
这仅适用于现代浏览器,但具有遗留实现。
关于javascript - MDL 选项卡的 "Tab Rendered"事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377286/