0

我试图制作一个按钮来开始在播放器上播放视频。
如果我按控制栏上的“正在播放”,播放器就会出现并且工作正常。
但是我a href link开始玩是行不通的。
play()不会被解雇。为什么?

<script>
    function onYouTubePlayerReady(playerId) {
      ytplayer = document.getElementById("myytplayer");
    }

    function play() {
  if (ytplayer) {
    ytplayer.playVideo();
  }
}
</script>

  <script type="text/javascript" src="swfobject.js"></script>    
  <div id="ytapiplayer">
    You need Flash player 8+ and JavaScript enabled to view this video.
  </div>

  <script type="text/javascript">

    var params = { allowScriptAccess: "always" };
    var atts = { id: "myytplayer" };
    swfobject.embedSWF("http://www.youtube.com/v/P5_GlAOCHyE?enablejsapi=1&playerapiid=ytplayer", 
                       "ytapiplayer", "425", "356", "8", null, null, params, atts);

  </script>

  <a href="javascript:void(0);" onclick="play();">Play</a>
4

2 回答 2

0

与 Flash 对象交谈可能很困难。这是我用来发送消息的代码:

function runFlashFunction( flashName, funcName ) {
    var
    od = document[flashName],
    ow = window[flashName];
    // flash isn't happy with o=func;o(); syntax
    try {
        if( od && !!(od[funcName]) ) {
            return document[flashName][funcName]( );
        }
        if( ow && !!(ow[funcName]) ) {
            return window[flashName][funcName]( );
        }
        if( ow && ow.length && !!(ow[0]) && !!(ow[0][funcName]) ) {
            return window[flashName][0][funcName]( );
        }
        return void 0;
    } catch( ex ) {
        return void 0;
    }
}

为什么这一切?因为某些浏览器使用不同的方式来访问 Flash 内容。最后一个可能不需要,但我确定它包括在内。

此外,您的链接使用不推荐的样式。这个更好:

<a href="#" onclick="play();return false">Play</a>

甚至更好:在 JavaScript 中分配回调,而不是在 HTML 中:

$(function(){
    $('#playLink').click(function(){ // name the link playLink (or whatever)
        play();
        return false;
    });
});
于 2013-08-25T15:47:44.133 回答
0

尽量不要使用全局变量

var ytplayer = null;
function onYouTubePlayerReady(playerId) {
   ytplayer = document.getElementById("myytplayer");
}

function play() {
  if (ytplayer) {
    ytplayer.playVideo();
  }
}
于 2013-08-25T15:50:53.130 回答