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

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

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

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

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

Я знаю, что в swfobject 1.5 (сейчас я использую 2.2) я смог бы встроить 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 Ответ

1 голос
/ 05 ноября 2010

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

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

Я создал новую функцию под названием replaceDiv, которая в основном просто делает все, что вы уже делаете в функции jquery click.

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 это Зверь. : P

...