Vaadin EmbedSWF
Posted
技术标签:
【中文标题】Vaadin EmbedSWF【英文标题】: 【发布时间】:2013-09-06 14:50:59 【问题描述】:我想使用 YouTube 插件,但它与 Vaadin 7 不兼容。所以我想也许 AbstractjavascriptComponent 可以解决我所有的问题。
所以我认为创建一个嵌入 swfobject 的 javascript 可以解决问题。但这不起作用。我认为问题在于 ytapiplayer 不是有效标签...
id(字符串,必需)指定您希望用 Flash 内容替换的 html 元素(包含您的替代内容)的 ID。我以为我通过设置样式名称解决了它。
youtubeconnector.js
gui_components_YouTuber =
function()
var params = allowScriptAccess: "always" ;
var atts = id: "myytplayer" ;
swfobject.embedSWF("http://www.youtube.com/v/DuYVDHfaCyM?enablejsapi=1&playerapiid=ytplayer&version=3","ytapiplayer", "425", "356", "8", null, null, params, atts);
function onYouTubePlayerReady(playerId)
ytplayer = document.getElementById("myytplayer");
function play()
if (ytplayer)
ytplayer.playVideo();
YouTuber.java
package gui.components;
import com.vaadin.annotations.JavaScript;
import com.vaadin.ui.AbstractJavaScriptComponent;
@JavaScript("swfobject.js", "youtubeconnector.js")
public class YouTuber extends AbstractJavaScriptComponent
public YouTuber()
setStyleName("ytapiplayer");
主要问题是 swfobject.embedSWF 需要一个 DIV 元素来链接。有可能创造出这样的东西吗?我试过 Document.get().. 但这会导致不满意的链接错误...
【问题讨论】:
【参考方案1】:您是否尝试过将 vaadin 的 BrowserFrame 组件与 youtube 插件一起使用?
如果我想嵌入东西,我个人将它用于多种东西,外部 pdf。它还可以链接到框架或其他项目中的其他网站。所以我认为以下内容也应该适合你。
BrowserFrame external = new BrowserFrame(null, new ExternalResource("http:///link"));
Layout.add(external);
老实说,你的意思可能是插件,使用外部资源确保它是托管和可访问的。
【讨论】:
【参考方案2】:你可以使用 Component.setDebugId(divId) 然后在js端链接进去...
【讨论】:
以上是关于Vaadin EmbedSWF的主要内容,如果未能解决你的问题,请参考以下文章