1

我想使用 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().. 但这会导致不满意的链接错误...

4

2 回答 2

0

您可以使用 Component.setDebugId(divId) 然后在 js 端链接到它...

于 2013-10-18T00:47:04.810 回答
0

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

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

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

老实说,您的意思可能与插件无关,使用外部资源确保它是托管和可访问的。

于 2015-08-31T06:51:50.680 回答