Javascript 当组件变得可见时,如何触发事件。必须是独立的

Javascript 当组件变得可见时,如何触发事件。必须是独立的,javascript,jsf,javascript-events,visibility,Javascript,Jsf,Javascript Events,Visibility,我想知道是否有人知道在组件可见时触发事件的方法 在我的情况下,我有一堆客户端选项卡和它们下面的一些组件,需要知道它们何时变得可见。因此,它们被某个父容器隐藏或显示。我无法控制这些选项卡,因此在切换选项卡时无法触发事件(我正在编写一个独立的JSF组件,因此我无法始终预测使组件可见的确切操作是什么) 因此,这个解决方案必须在我的组件中自包含。我的组件是否有办法确定由于父容器中的某些更改而变得可见 谢谢 在做了更多的研究并查看了插件的代码之后,我得出结论,没有一种好的基于事件的方法可以在所有浏览器中完

我想知道是否有人知道在组件可见时触发事件的方法

在我的情况下,我有一堆客户端选项卡和它们下面的一些组件,需要知道它们何时变得可见。因此,它们被某个父容器隐藏或显示。我无法控制这些选项卡,因此在切换选项卡时无法触发事件(我正在编写一个独立的JSF组件,因此我无法始终预测使组件可见的确切操作是什么)

因此,这个解决方案必须在我的组件中自包含。我的组件是否有办法确定由于父容器中的某些更改而变得可见


谢谢

在做了更多的研究并查看了插件的代码之后,我得出结论,没有一种好的基于事件的方法可以在所有浏览器中完成我所需要的工作

因此,我不得不采取投票的方式。我的解决方案涉及使用以下工具检查组件可见性:

jQuery(this.id).is(":visible")
如果该组件是可见的,我将为该组件运行繁重的javascript代码。如果不可见,我每200ms运行一个例程,检查组件是否可见。这样,我就可以知道组件何时第一次可见,这样我就可以处理它了

由于每200ms执行的代码量非常小(仅进行可见性检查,我认为这是基于测试组件宽度==0),因此这似乎执行得非常好


因此,这不是我所希望的那么酷的解决方案,但它似乎完成了任务。

我通过在tabstrip切换tab:

window.dispatchEvent(new Event('resize'));

你也可以考虑射击<代码>滚动< <代码>和/或代码> VistiBuryRechange < /C> >

BTW,这也是一个很有教育意义的文章,所以我可能应该包括:这不是我希望的答案。你有没有想出更好的解决办法?我有完全相同的情况,在用户控件中有一个谷歌地图——在它可见之前不能初始化它。(至少,不正确)