После установки flash swfobject по-прежнему не будет вставлять видео, пока я не перезагружу исходную страницу.

У меня есть простая html-страница с некоторым javascript, где, если я щелкну ссылку, она покажет флэш-видео в div с помощью функции swfobject.embedSWF.

Я сделал тест:

  1. Удалил флеш с моей машины, затем перезагрузил страницу и щелкнул ссылку ... Я правильно не увидел видео.

  2. Затем я установил флеш-память и вернулся на ту же страницу (без перезагрузки), но встраивание по-прежнему не работает.

Я знаю, что в swfobject 1.5 (сейчас я использую 2.2) я смогу встроить swf после того, как пользователь установит флеш-память, но теперь пользователю нужно перезагрузить страницу, чтобы флеш-память появилась. Это не очень хорошо для моей нынешней ситуации, кто-нибудь знает, что здесь происходит?

Вот пример кода с использованием видео на 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>

person Abadaba    schedule 03.11.2010    source источник


Ответы (1)


Если вы уберете вызов swfEmbed из jquery, он заработает. Я особо не углублялся в подробности, но сделал вот что:

<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

пс. Squarepusher - ЗВЕРЬ. :П

person A_Rival    schedule 04.11.2010
comment
Спасибо за тест, но он все еще не решает мою проблему, а именно: Удалите flash, загрузите эту страницу в любом браузере, загрузите flash, вернитесь в браузер и попробуйте щелкнуть .... он все еще не работает, пока я не обновлю страницу ... не проблема jQuery. - person Abadaba; 05.11.2010