通过脚本加载动态播放器的问题

时间:2014-03-26 05:19:26

标签: javascript jquery html

我正在尝试根据浏览器加载动态播放器,例如使用object标签的activeX插件和使用embed标签的Firefox和谷歌浏览器的vlc插件,所以我试图将它包含在脚本中以便加载它可以检测它是什么浏览器并显示播放器,但不幸的是我收到以下错误:

无法获取属性'add'的值:object为null或undefined

以下是我的代码:

   <head>

   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"> </script>
   <script type="text/javascript">
        var client = "FF";

                        $(document).ready(function(){
                            checkIE();
                            startUp();
                            //startIt();

                            $(function(){ 
            $("#vlcIE").css({ "width": "400px", "height": "300px" });
                  });
                        });

                        function checkIE() {
                            var clientCheck = window.navigator.appName;
                            if (clientCheck == "Microsoft Internet Explorer") {
                                alert("IE");
                                client = "IE";
                                return true;
                            } else {
                                alert("FF");
                                client = "FF";
                                return false;
                            }
                        }

                        function startIt(){
                            if(client == "IE"){
                                    playInIE();
                            }else{
                                    playInOthers();
                            }

                        }

                        function playInOthers() {
                            alert("playin FF");
                            var players = document.getElementsByName("video1");
                            var options = new Array("");
                            url = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov";

                            var id = players[0].playlist.add(url, null, options);
                            players[0].playlist.playItem(id);
                            alert("playing video");
                        }

                        function playInIE() {
                            alert("play in IE");
                            var vlc = document.getElementById("vlcIE");
                            var options = new Array(":aspect-ratio=16:10", "--rtsp-tcp");
                            //var options=[":ts-csa-ck="+EncryptionkeyValue];
                            var urlVideofile = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov";
                            var targetURL = "rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov";
                            var itemId = vlc.playlist.add(targetURL, "", options);
                            var id = vlc.playlist.add(urlVideofile, null, options);
                            vlc.playlist.playItem(id);
                        }

                        function startUp(){
                            var player;
                            if (client == "IE") {
                                    player = "<object type='application/x-vlc-plugin' id='vlcIE' width='300' height='225'  classid='clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921' ></object>";

                            } else {
                                    player = "<embed type='application/x-vlc-plugin' pluginspage='http://www.videolan.org'  id='vlc' name='video1'  autostart='yes'   toolbar='false'  loop='yes' width='400' height='300'                                   target='rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov' />";
                            }

                            //$("#video_holder").html(player);
                            document.getElementById("video_holder").innerHTML=player;
                       }


  </script>

    </head>

       <body>

       <div id="video_holder" style="border:1px solid #00FF33"></div>
          <button type="button" id="start" onClick="startIt()">Start</button>

        </body>

1 个答案:

答案 0 :(得分:2)

您在此处调用函数作为变量:

if (checkIE) {

应该是:

if (checkIE()) {

你必须从你的checkIE函数中返回一个值:

function checkIE() {
    var client = window.navigator.appName;
    if (client == "Microsoft Internet Explorer") {
        alert("IE");
        playvideos();
        return true;
    } else {
        alert("FF");
        hello();
        return false;
    }
}

(你的函数末尾也有一个分号(;)。那不属于那个

此外,您可能不会开始使用javascripts console.log而不是警报。这样,你的javascript不会中断,但你可以在控制台中看到它的路径

编辑1

您的脚本中有更多错误。修好之后,我为我“工作”(你可以查看JSFiddle看看它是否“正常”

问题在于你有这段代码:

if (checkIE) {
        var player = "<object type='application/x-vlc-plugin' id='vlc' width='300' height='225' classid='clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921'></object>";
    } else {
        var player = "<embed type='application/x-vlc-plugin' pluginspage='http://www.videolan.org'  id='vlc' name='video1'  autostart='yes'   toolbar='true'  loop='yes' width='400' height='300'
           target='rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov' />"
    }

你在target=...之前有一个换行符,这是非法的。您还忘记了该行末尾的分号。所以这是工作脚本部分:

if (checkIE()) {
        var player = "<object type='application/x-vlc-plugin' id='vlc' width='300' height='225' classid='clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921'></object>";
    } else {
        var player = "<embed type='application/x-vlc-plugin' pluginspage='http://www.videolan.org'  id='vlc' name='video1'  autostart='yes'   toolbar='true'  loop='yes' width='400' height='300'            target='rtsp://184.72.239.149/vod/mp4:BigBuckBunny_115k.mov' />";
    }

我还将警报更改为小提琴中的console.log以便于测试

编辑2

我现在有点工作了。您可以在THIS PASTEBIN查看代码。 唯一的问题:它没有播放任何视频。

编辑3

我测试了IE部分,我发现了navigator.appname = Netscape

因此,在checkIE function中,您将检查行更改为:

if (clientCheck == "Microsoft Internet Explorer" || clientCheck == "Netscape") {

编辑4

原来,浏览器检查完全错误。我已经google了很多,最终找到了一个有效的解决方案。如果你检查这个PASTEBIN,那么你就有了一个有效的例子。