использование jquery для вставки JavaScript (для QuickTime) в <div> - PullRequest
1 голос
/ 31 мая 2009

Я довольно новичок в javascript и программировании и столкнулся с кирпичной стеной с моим проектом. У меня есть div, который содержит javascript для встраивания быстродействующего проигрывателя, когда страница загружается впервые, на файл .mov не указывает страница, поэтому div-заполнитель «unhidden» и div проигрывателя установлен на style.display = 'none'.

Пока все хорошо, пользователь затем вводит название нового фильма, div-заполнитель скрыт и div-проигрыватель не скрыт. Моя проблема в том, что javascript в плеере div не запускался, когда div был сделан видимым, если я превращаю скрипт для игрока в отдельную функцию, затем вызываю его, когда div игрока не отображается, тогда игрок запускает полный экран, а не в дел.

Я пытался использовать jquery для добавления javascript в div после того, как div сделан видимым, но не получается получить $("#player").load(somescript) или $("#player").html(htmlwithjavain) для добавления сценария.

Я знаю, что содержание игрока можно изменить, так как я могу использовать $("#player").empty(); и $("#player").html(); для управления им.

Спасибо за чтение, надеюсь, вы можете помочь

Вот соответствующий код: -

<html>
    <head>
        <title>Browse Media Player</title>


                <link rel="stylesheet" type="text/css" href="CSS/browser.css" />

        <script type="text/javascript">

        <!--

                var userinterrupt=false;
                var runonce=false;

                var currentfile;
                var basemediapath = "http://10.255.10.71/IsilonBrowse/movfiles/";

                var playerheight = 750;
                var playerwidth = 900;

                var currenttc;
                var basetime;
                var baseduration;
                var currentduration = "no tc available";
                var tcoffset = 35990;

                var playspeed = 1;
                var boolisplaying=true;
                var boolonslide=false;



                //function to fire off other methods when the DOM is loaded
                //Use in place of body onload, using jquery library
                //

            $(document).ready(function()
                {
                  //showEvents('jquery running');
                  showhideplayer(null);
                });




              //-->
             </script>


    </head>
    <body onload="forceslider(); timecode()">



      <div class="container">

           <div id="timecode_container">
                <div class="tc_overlay"></div>
                <div id="timecode" class="timecode"></div>
           </div>

           <div id="player" class="playerdiv" style="display:none;">

               **javascript for player goes here...**

           </div>

           <div id="noclipoverlay" class="playerdiv" style="display:none;">
           <p>No media loaded...
           </div>

           <div id="noclipoverlay2" class="playerdiv" style="display:none;">
           <p>loading media....
           </div>

      </div>


        <div id="loadstatus"></div>
        <div id="alerts"></div>

    </body>
</html>

Теперь файл mainstuff.js, в который следует добавить код javascript: -

         //function to switch the player div and mask div is no media file is
         //defined in the 'currentfile' variable
         //
         function showhideplayer(state)
         {

          if (!currentfile)
          {
                showEvents('wtf no media');
                document.getElementById("player").style.display = 'none';
                document.getElementById("noclipoverlay").style.display = 'block';
          }

          else if (currentfile)
          {

           document.getElementById("player").style.display = 'block';
           document.getElementById("noclipoverlay").style.display = 'none';
           showEvents('valid media file');

           }

           }

            //end of showhideplayer



         //function to change movie files, note SetResetPropertiesOnReload must be set to false
         //otherwise the B'stard player will default all attributes when setURL runs
         //
         function changemovie(newmovie)
         {
            oldfile = currentfile;
            if (newmovie == currentfile)
            {
              showEvents('same file requested so no action taken');
              return;
            }

            if (newmovie != currentfile)
            {
              showEvents('changing movie');
              //switch the divs around to hide the 'no media slide'
              document.getElementById("player").style.display = 'block';
              document.getElementById("noclipoverlay").style.display = 'none';
            }


            showEvents('movie changed to: '+newmovie);
            currentfile=newmovie;

            if (!oldfile)
            {
              $("#player").empty();
              showEvents('the old media file was blank');

              $("#player").load("/path/loadplayer.js");



            }

            document.movie1.Stop();
            document.movie1.SetResetPropertiesOnReload(false);
            document.movie1.SetURL(currentfile);

            //showEvents('movie changed to: '+newmovie);

            if (boolisplaying)
            {
              document.movie1.Play();
            }

         }

[EDIT] и вот содержимое loadplayer.js: -

            var movie1 = QT_WriteOBJECT(
        currentfile, playerwidth, playerheight, "",
        "controller","false",
        "obj#id", "movie1",
        "emb#id","qt_movie1",
        "postdomevents","True",
        "emb#NAME","movie1",
            "enablejavascript","true",
        "autoplay","true",
        "scale","aspect",
        "pluginspage","http://www.apple.com/quicktime/download/"
            );

Ответы [ 2 ]

2 голосов
/ 31 мая 2009

Не зная содержания вашего файла loadplayer.js, вам будет сложно найти решение.

Например, если скрипт попытается выполнить document.write () после загрузки страницы, он создаст новую страницу, перезаписав текущую страницу. Это то, что вы имеете в виду, когда говорите, что быстрый фильм работает на весь экран?

Также обычно не стоит загружать элемент SCRIPT и вставлять его в виде HTML. Когда вы добавляете HTML на страницу, jQuery находит все элементы SCRIPT и оценивает их в глобальном контексте, что может привести к неожиданным результатам.

0 голосов
/ 16 июля 2009

Используйте QT_GenerateOBJECTText_XHTML или QT_GenerateOBJECTText из AC_QuickTime.js, если вы хотите вернуть строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...