Можно ли поместить тег объекта HTML внутри тега формы HTML? - PullRequest
1 голос
/ 13 октября 2010

У меня есть простая страница ASP.NET, которая использует медиаплеер VLC для воспроизведения видео в IE. У меня также есть четыре кнопки для управления воспроизведением:

Play, Pause, Stop, and Mute

Четыре кнопки вызывают функции JavaScript, которые обращаются к элементу управления ActiveX. Когда я нажимаю на любую из кнопок, я получаю следующую ошибку в функции JavaScript:

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

Однако, если переместить тег object для проигрывателя vlc за пределы тега 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 голосов
/ 13 октября 2010

Проблема в том, что внутри тега <form> элемент <object> находится вне области действия.

Попробуйте использовать:

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