如何测试VLC ActiveX的事件
How to test events of the VLC ActiveX
我需要实现VLC ActiveX的所有JavaScript事件。
问题是所有的事件都不是触发的,我不确定代码中出了什么问题。
当视频结束时,我至少需要看到一些提醒信息。
它在这里>>registerVLCEvent('MediaPlayerEndReached', handleEvents);
但是没有快乐。
代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
<title></title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function getVLC(name) {
if (window.document[name]) {
return window.document[name];
}
if (navigator.appName.indexOf("Microsoft Internet") == -1) {
if (document.embeds && document.embeds[name])
return document.embeds[name];
}
else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
{
return document.getElementById(name);
//return getRawObject(name);
}
}
function registerVLCEvent(event, handler) {
var vlc = getVLC("vlc2");
if (vlc) {
if (vlc.attachEvent) {
// Microsoft
vlc.attachEvent(event, handler);
}
else if (vlc.addEventListener) {
// Mozilla: DOM level 2
vlc.addEventListener(event, handler, false);
}
else {
// DOM level 0
vlc["on" + event] = handler;
}
}
}
// stop listening to event
function unregisterVLCEvent(event, handler) {
var vlc = getVLC("vlc2");
if (vlc) {
if (vlc.detachEvent) {
// Microsoft
vlc.detachEvent(event, handler);
}
else if (vlc.removeEventListener) {
// Mozilla: DOM level 2
vlc.removeEventListener(event, handler, false);
}
else {
// DOM level 0
vlc["on" + event] = null;
}
}
}
// event callback function for testing
function handleEvents(event) {
if (!event)
event = window.event; // IE
if (event.target) {
// Netscape based browser
targ = event.target;
} else if (event.srcElement) {
// ActiveX
targ = event.srcElement;
} else {
// No event object, just the value
alert("Event value" + event);
return;
}
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
alert("Event " + event.type + " has fired from " + targ);
}
// handle mouse grab event from video filter
function handleMouseGrab(event, X, Y) {
if (!event)
event = window.event; // IE
alert("new position (" + X + "," + Y + ")");
}
$(document).ready(function () {
// Register a bunch of callbacks.
registerVLCEvent('MediaPlayerNothingSpecial', handleEvents);
registerVLCEvent('MediaPlayerOpening', handleEvents);
registerVLCEvent('MediaPlayerBuffering', handleEvents);
registerVLCEvent('MediaPlayerPlaying', handleEvents);
registerVLCEvent('MediaPlayerPaused', handleEvents);
registerVLCEvent('MediaPlayerForward', handleEvents);
registerVLCEvent('MediaPlayerBackward', handleEvents);
registerVLCEvent('MediaPlayerEncounteredError', handleEvents);
registerVLCEvent('MediaPlayerEndReached', handleEvents);
registerVLCEvent('MediaPlayerTimeChanged', handleEvents);
registerVLCEvent('MediaPlayerPositionChanged', handleEvents);
registerVLCEvent('MediaPlayerSeekableChanged', handleEvents);
registerVLCEvent('MediaPlayerPausableChanged', handleEvents);
});
</script>
</head>
<body>
<object width="720" height="408" id='vlc2' events="True" codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab"
classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921">
<embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" version="VideoLAN.VLCPlugin.2"
width="720" height="408" id="vlc1" />
<param name="src" value="http://content.bitsontherun.com/videos/bkaovAYt-52qL9xLP.mp4" />
<param name="ShowDisplay" value="True" />
<param name="AutoPlay" value="False" />
</object>
</body>
</html>
嗯。。。所以事件根本不起作用。。。
所以我认为最好的想法是在C#端(Invoke)或HTML端实现一些方法来获得vlc.input.state值。
以下是HTML的示例:
$(document).ready(function () {
start_timer = setInterval(function () {
var vlc = getVLC("vlc2");
var s = vlc.input.state;
// alert(s);
},
1000);
});
相关文章:
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 如何使用VLC Web插件拍摄视频快照
- 调用Activex Control's javascript中的函数
- ActiveX ListControl 事件在 Windows 更新后不再起作用
- 无法在activex控件中初始化Microsoft.PointOfService
- 使用ActiveX读取PERL中的文件
- 使用Javascript更改ActiveX视频播放器源代码
- NodeJS/ExpressJS:代理HTTP视频流(来自VLC)
- 使用 modernizr 检测 activex 对象
- ActiveX 仅在激活 IE 9 控制台时工作
- 如何在不使用 JavaScript 中的 activex 的情况下从客户端获取文件大小
- IE 删除 vbscript,但 activex 终端服务控件 msrdp.ocx 仅适用于 vbscript
- 在 Javascript 中运行命令 Wscript.shell ActiveX
- 从浏览器以编程方式打开 VLC 媒体播放器
- HTML to exe>阻止 Internet Explorer 对象中的 JavaScript 和 ActiveX 安
- 如何允许 ActiveX 对象在 JavaScript 中实例化之前安装更新的版本
- 使用javascript创建/编写文本/ xml文件,而不使用ActiveX
- 使用 jQuery 播放暂停嵌入式 VLC 播放器
- 有没有办法使用 JavaScript 或 XHTML 禁用 ActiveX 控件的信息栏
- 如何测试VLC ActiveX的事件