我想使用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()..但这会导致链接错误......
答案 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);
老实说,你可能不喜欢你的意思,使用外部资源确保托管和访问。