安装闪存后,swfobject仍然不会嵌入视频,直到我重新加载原始页面

时间:2010-11-03 18:02:40

标签: javascript flash swfobject

我有一个带有一些javascript的简单html页面,如果我点击链接,它将使用swfobject.embedSWF函数在div中显示flash视频。

我做了一个测试:

  1. 从我的机器上卸载了闪存,然后重新加载页面并点击了链接...我没有看到正确的视频。

  2. 然后我安装了flash并返回到同一页面(没有重新加载),嵌入仍然无法正常工作。

  3. 我知道在swfobject 1.5(我现在使用的是2.2),我可以在用户安装flash之后嵌入swf,但现在用户需要重新加载页面才能显示flash。这对我目前的情况不利,有谁知道这里发生了什么?

    以下是使用YouTube视频的示例代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <title>SWFOBJECT TEST</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
        <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js' type='text/javascript'></script>
        <script src='http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js' type='text/javascript'></script>
        <style>
            #link{
                display:block;
                margin-bottom:10px;
            }
            #videoContainer{
                width:610px;
                height:360px;
            }
        </style>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#link").click(function(){
                    var flashVars = {};
                    var params = {};
    
                    flashVars["lang"] = "en";
    
                    params["menu"] = "false";
                    params["wmode"] = "opaque";
                    params["allowScriptAccess"] = "always";
                    params["allowFullScreen"] = "true"; 
                    params["bgcolor"] = "#fff";
    
                    //add video
                    swfobject.embedSWF("http://www.youtube.com/v/uZ0LL1SJ-6U?enablejsapi=1&playerapiid=ytplayer", "videoContainer",640, 480, "9.0.0", null, flashVars, params,{});
                });
            });
        </script>
    </head>
    <body>
        <a href="#" id="link">Click me</a>
        <div id="videoContainer"></div>
    </body>
    </html>
    

1 个答案:

答案 0 :(得分:1)

如果你从jquery中取出你的swfEmbed调用,它就可以了。我没有真正钻研到远,但我这样做了:

<a href="javascript:replaceDiv()" id="link">Click me</a>

我创建了一个名为replaceDiv的新函数,它基本上只执行你在jquery点击函数中所做的一切。

function replaceDiv () {
                var flashVars = {};
                var params = {};

                flashVars["lang"] = "en";

                params["menu"] = "false";
                params["wmode"] = "opaque";
                params["allowScriptAccess"] = "always";
                params["allowFullScreen"] = "true"; 
                params["bgcolor"] = "#fff";

                //add video
                swfobject.embedSWF("http://www.youtube.com/v/uZ0LL1SJ-6U?enablejsapi=1&playerapiid=ytplayer", "videoContainer",640, 480, "9.0.0", null, flashVars, params,{})
}

然后我每次都删除了所有现有的JS和VOILA作品。

如果您希望我实际尝试调试您的JQuery,请告诉我;我可以补充说它看起来很好。你可能需要别的东西,我不知道。

-A

PS。 Squarepusher是一个野兽。 :P