asp.net
  • javascript
  • jwplayer
  • 2010-02-08 4 views 1 likes 
    1

    재생 목록은 매번 FF로로드되지만 처음에는 IE (6-8)에서만 무작위로로드됩니다. 던져진 오류를 경고하면 "TypeError : playerReady undefined"가 표시됩니다.JW 플레이어 재생 목록은 IE에서 무작위로로드되며 매번 FF로 잘 작동합니다.

    FF가 재생 목록을 완벽하게 표시하므로 코드가 잘 보이고 분명히 작동합니다. 이 문제를 해결하는 방법을 모르겠습니다. 누군가?

    <script type='text/javascript'> 
         var so = new SWFObject('/UI/Flash/player.swf', 'ply', '<%=FlashWidth %>', '<%=FlashHeight %>', '9', '#ffffff'), 
          playlistURL = '<%=PlaylistURL %>', 
          imageURL = '<%=GetBackgroundImageUrl() %>'; 
          so.addParam('allowfullscreen', 'true'); 
          so.addParam('allowscriptaccess', 'always'); 
         if (playlistURL !== '') { 
          so.addVariable('playlistfile', playlistURL); 
          so.addVariable('playlist', 'none'); 
          so.addVariable('enablejs', 'true'); 
         } 
         else { 
          so.addVariable('file', '<%=FlashURL %>'); 
         } 
    
         if (imageURL.length > 0) { 
         so.addVariable('image', imageURL); 
         } 
         so.write('preview<%=PlayerID %>'); 
        </script> 
    
    +0

    JW 플레이어 코드가 100 %가 아닌 것 같습니다. – patad

    답변

    0

    하지 내가 그것을 해결 방법을 잘하지만, 여기에 실제로 작동 최종 코드 :

    HTML 페이지 :

    <script type='text/javascript'> 
         var so = new SWFObject('/UI/Flash/player.swf', 'ply', '700', '345', '9', '#ffffff'), 
          playlistUrl = 'XML-PLaylist', 
          imageURL = '/ImageVault/Images/conversionFormat_2/id_1577/scope_0/ImageVaultHandler.aspx'; 
          so.addParam('allowfullscreen', 'true'); 
          so.addParam('allowscriptaccess', 'always'); 
          so.addParam('wmode', 'opaque'); 
         if (playlistUrl !== '') { 
          so.addVariable('playlistfile', playlistUrl); 
          so.addVariable('playlist', 'none'); 
          so.addVariable('controlbar', 'bottom'); 
          so.addVariable('backcolor', '0xDDE5FF'); 
          so.addVariable('frontcolor', '0x142864'); 
          so.addVariable('screencolor', '0xffffff'); 
          so.addVariable('enablejs', 'true'); 
          so.addVariable('overstretch', 'true'); 
         } 
         else { 
          so.addVariable('file', ''); 
         } 
    
         if (imageURL.length > 0) { 
         so.addVariable('image', imageURL); 
         } 
         so.write('preview'); 
        </script> 
    

    그리고 JavaScript는 다음과 같습니다.

    try { 
    
          var playlistReady = playerReady; 
         } cat 
    
    ch (err) { 
         //alert('1' + err); 
        } 
    
        playerReady = function(obj) { 
         setTimeout(function() { checkPlaylistLoaded(obj) }, 1); 
         try { 
          playlistReady(obj); 
         } catch (err) { 
          //alert(err); 
         } 
        } 
    
        function itemHandler(obj) { 
         var item = obj['index']; 
         var playlist = $("#" + obj['id']).next(); 
         var currentItem = 0; 
         playlist.children().each(function() { 
          if (currentItem == item) { 
           $(this).addClass("playing"); 
          } else { 
           $(this).removeClass("playing"); 
          } 
          currentItem++; 
         }); 
        } 
    
    
        function checkPlaylistLoaded(obj) { 
         //debugger; 
         var player = document.getElementById(obj['id']), 
          jsPlaylist = player.getPlaylist(); 
         if (jsPlaylist.length > 0) { 
          var playlist = createPlaylist(obj); 
          populatePlaylist(player, jsPlaylist, playlist); 
          player.addControllerListener("PLAYLIST", "playlistHandler"); 
          player.addControllerListener("ITEM", "itemHandler"); 
          player.addControllerListener("STOP", "showPlaylist"); 
          player.addModelListener("STATE", "stateListener"); 
         } else { 
          setTimeout(function() { checkPlaylistLoaded(obj) }, 150); 
         } 
        } 
    
        function stateListener(obj) { 
         if (obj.newstate === 'PLAYING') { 
          hidePlaylist(); 
         } 
         if (obj.newstate === 'PAUSED') { 
          showPlaylist(); 
         } 
        } 
    
        function createPlaylist(obj) { 
         var playerDiv = $("#" + obj['id']); 
         playerDiv.after("<div class='jw_playlist_playlist'></div>"); 
         return playerDiv.next(); 
        } 
    
        function hidePlaylist() { 
         $('.jw_playlist_playlist').animate({ left: "-320px" }, 1000); 
        } 
    
        function showPlaylist() { 
         $('.jw_playlist_playlist').animate({ left: "-10px" }, 1000); 
        } 
    
        function playlistHandler(obj) { 
         var player = document.getElementById(obj['id']), 
          jsPlaylist = player.getPlaylist(), 
          playerDiv = $("#" + obj['id']), 
          playlist = playerDiv.next(); 
         populatePlaylist(player, jsPlaylist, playlist); 
        } 
    
        function populatePlaylist(player, jsPlaylist, playlist) { 
         playlist.empty(); 
         for (var i = 0; i < jsPlaylist.length; i++) { 
          var jsItem = jsPlaylist[i]; 
          var alternate = "even"; 
          if (i % 2) { 
           alternate = "odd"; 
          } 
          playlist.append("<div id='" + getItemId(jsItem) + "' class='jw_playlist_item " + alternate + "'>" + dump(jsItem) + "</div>"); 
         } 
         var playlistItem = 0; 
         playlist.children().each(function() { 
          var currentItem = playlistItem; 
          $(this).click(function() { 
           player.sendEvent("ITEM", currentItem); 
          }); 
          playlistItem++; 
         }); 
        } 
    
        function getItemId(arr) { 
         var output = '${link}', 
          variables = getVars(output), 
          j; 
    
         for (j = 0; j < variables.length; j++) { 
          var variable = variables[j], 
           varName = variable.replace('${', '').replace('}', ''), 
           value = arr[varName]; 
          if (!value) { 
           value = ''; 
          } 
          output = output.replace(variable, value); 
         } 
         return output; 
        } 
    
        function dump(arr) { 
         var output = "<div class='jw_playlist_title'>${title}</div><div class='jw_playlist_description'>${description}</div>", 
          variables = getVars(output), 
          j; 
         for (j = 0; j < variables.length; j++) { 
          var variable = variables[j], 
           varName = variable.replace('${', '').replace('}', ''), 
           value = arr[varName]; 
          if (!value) { 
           value = ''; 
          } 
          output = output.replace(variable, value); 
         } 
         return output; 
        } 
    
        function dumpText(arr) { 
         var dumped_text = ""; 
         if (typeof (arr) == 'object') { 
          for (var item in arr) { 
           var value = arr[item]; 
           if (typeof (value) == 'object') { 
            dumped_text += "<div class='" + item + "'>"; 
            dumped_text += dump(value); 
            dumped_text += "</div>"; 
           } else { 
            dumped_text += "<div class='" + item + "'>" + value + "</div>"; 
           } 
          } 
         } else { 
          dumped_text += arr + " (" + typeof (arr) + ")"; 
         } 
         return dumped_text; 
        } 
    
        function getVars(str) { 
         return str.match(/\$\{(.*?)\}/g); 
        } 
    
    0

    playerReady 함수는 플레이어가 설정 프로세스를 마친 후에 플레이어에 의해 호출됩니다. 해당 함수를 정의한 다음 undefined로 설정 했습니까? 이로 인해 오류가 발생할 수 있습니다.

    또한 어떤 버전의 플레이어를 사용하고 있습니까?

    더 이상 지원되지 않는 3.X 플레이어 이후로 플래시 바를 보지 못했다고 나는 생각하지 않습니다.

    보다도,

    자크

    개발자

    , 롱테일 비디오

    +0

    안녕하세요! 답장을 보내 주셔서 감사합니다. 무슨 일이 일어 났는지는 모르지만 어떻게 든 그 일이 시작되었습니다. 솔루션을 여기에서 확인하십시오 : http://www.attendo.com/sv/se/ – patad

    관련 문제