HTML对象标记可以放在HTML表单标记内吗?

时间:2010-10-13 14:46:53

标签: asp.net html activex vlc

我有一个简单的ASP.NET页面,它使用VLC媒体播放器在IE中播放视频。我还有四个按钮来控制播放:

Play, Pause, Stop, and Mute

这四个按钮调用访问ActiveX控件的JavaScript函数。当我点击任何按钮时,我在JavaScript函数中收到以下错误:

  

"Microsoft JScript runtime error: 'vlc' is undefined".

但是,如果将vlc播放器的object标记移到form标记之外,则JavaScript可以正常工作,我可以控制视频播放。

我的问题是为什么object标记必须在表单标记之外才能使此代码正常工作?

<%@ Page Language="C#" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="VlcTest.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>VLC Test Page</title>

    <script type="text/javascript">
        function mute() {
            vlc.audio.toggleMute();
        }
        function play() {
            vlc.playlist.play();
        }
        function stop() {
            vlc.playlist.stop();
        }
        function pause() {
            vlc.playlist.togglePause();
        }
    </script>

</head>
<body>

    <form id="form1" runat="server">
        <div>

            <object type="application/x-vlc-plugin" 
                id="vlc" 
                width="720"
                height="548" 
                classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" >
                <param name="MRL" 
                    value="C:\Inetpub\wwwroot\Movies\Funny Cats.flv" />
                <param name="volume" value="50" />
                <param name="autoplay" value="false" />
                <param name="loop" value="false" />
                <param name="fullscreen" value="false" />
            </object>

            <br />

            <div id="controls">
                <input type="button" onclick="play()" value="Play" />
                <input type="button" onclick="pause()" value="Pause" />
                <input type="button" onclick="stop()" value="Stop" />
                <input type="button" onclick="mute()" value="Mute" />
            </div>

        </div>
    </form>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

问题是<form>标记内的<object>元素超出了范围。

尝试使用:

function play() {
  var player = document.getElementById("vlc");
  player.playlist.play();
}