Vaadin EmbedSWF

时间:2013-09-03 11:27:10

标签: java javascript components vaadin youtube-javascript-api

我想使用YouTube插件,但它与Vaadin 7不兼容。所以我想也许AbstractJavaScriptComponent可以解决我的所有问题。

所以我想创建一个嵌入swfobject的javascript可以解决问题。但这不起作用。我认为问题是ytapiplayer不是有效标签......

id(String,required)指定您希望替换为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()..但这会导致链接错误......

2 个答案:

答案 0 :(得分:0)

您可以使用Component.set Debug(divIde)然后在js端链接到它...

答案 1 :(得分:0)

您是否尝试过将vaadin中的BrowserFrame组件与youtube插件一起使用?

我个人用它来做多件事,外部pdf,如果我想嵌入东西。它还可以链接到框架或其他项目中的其他网站。所以我认为以下内容对您也有用。

BrowserFrame external = new BrowserFrame(null, new ExternalResource("http:///link"));
Layout.add(external);

老实说,你可能不喜欢你的意思,使用外部资源确保托管和访问。