我正在做一个 GXT/GWT 项目。我有两个选项卡,其中的内容是根据下拉菜单中的选择设置的。一个标签中的内容是嵌入式视频(Google 视频或 youtube 视频)
问题是在切换标签时,视频会重新加载并重新从头开始。我想要的是能够切换标签并在焦点切换到另一个标签时让视频继续播放或暂停。
任何想法,一如既往,非常感谢。
干杯,本
我同意@mmohab。这是 iFrame 的行为,与 flash 无关。重载问题将通过使用 Gxt 的HtmlContainer
类和setUrl()
方法而不是使用TabItem
orContentPanel
的setUrl
方法来解决。
HtmlContainer
将您给定的 Html 或 Url 页面正文包装到 Div 标记而不是 iFrame:
HtmlContainer html = new HtmlContainer("www.youtube.com");
yourTabItemObj.add(html);
Google 视频使用 Flash,当您切换到另一个选项卡时,它会从 DOM 中删除,并且当您切换回来时,Flash 必须重新加载。您也许可以为播放器创建一个自定义小部件,该小部件重新显示它并设置 dom 元素的显示或可见性 CSS 属性。
那是因为您使用 IFRAME 进行嵌入,IFRAME 必须在其位置或大小发生变化时重新加载。这是在 Firefox 中完成的,但是当 IFRAME 的位置或大小发生变化时,IE 不会重新加载 IFRAME。
在 diff 浏览器中存在此问题的不同行为。
对于 FF,如果您从一个选项卡切换到另一个选项卡,它将重新加载 Flash 内容。原因是,如果您从一个选项卡切换到另一个选项卡,则取消选择的选项卡“显示”属性将更改为“无”,当您再次返回该选项卡时,“显示”属性将更改为“阻止”。这是FF中这个问题的根本原因。
在 IE 中你不会遇到这个问题。
解决方案:
.templateTabItem {position: absolute !important;} //css
TabItem item = new TabItem();
if (!GXT.isIE && !GXT.isIE8 && !GXT.isIE9) {
item.setHideMode(HideMode.VISIBILITY);
item.addStyleName("templateTabItem");
}