好了,现在问题来了……
我首先尝试排除这个客户端是使用flash播放器、html5播放器还是mediaplayer……HTML5似乎提供的实现是免费的插件,所以我决定退出闪存……正在考虑HTML5路线..。一切都好..。做了一个很好的播放器,这也是跨浏览器,并很好地照顾编解码器,但哦…意识到html5无法流式传输ASX...因此,它回到了旧的windows mediaplayer路线....我别无选择..。
我放了一个javascript函数,它只是一个警告,应该在mediaplayer改变状态时触发(比如从play you pause it ...)
function WMP_status()
{
alert("state Changed");
}我在html页面上嵌入了一个mediaplayer对象,并在javascript中创建了一个别名,以编程方式访问该对象,并通过javascript ......Like获得对它的控制。
var WMP=document.getElementById("mediaplayer");然后轮到捕获mediaplayer的状态...所以我需要一些形式的事件...所以我像这样注册了事件,这样....and就可以正常工作了。
WMP.attachEvent("playStateChange", WMP_status);
// Note ... WMP.detachEvent("playStateChange", WMP_status); ... doesn't always detach events...我认为在IE中,事件不分离的问题仍然存在(去数字),但令我惊讶的是,我意识到在ie9……addEventListener也应该被包含在javascript支持中,所以我尝试了下面这行代码,它显然代表了上面的内容,但并不令人高兴.
WMP.addEventListener("playStateChange", WMP_status , false); 我可能认为IE9还没有正确地实现addEventListener,所以我尝试使用JQuery bind()方法,如下所示……但还是没有快乐...
$(WMP).bind("playStateChange", WMP_status); 我也尝试了这两个变种
(a)仍然没有快乐……
$(WMP).bind("playStateChange", "WMP_status"); (b)仍然没有快乐.
$(WMP).bind("playStateChange", function(){WMP_status()}); 我试过这些来排除所有的可能性。jquery网站上没有关于我是否可以输入函数名的信息……所以我也试着放了一个匿名的……
不管怎样..。我真的更喜欢使用Jquery机制来处理事件,特别是因为它更多地是跨浏览器的……有人能帮我解决这个问题吗?我也采用了这种动态附加事件的方法,因为我将通过jquery添加/删除元素……而remove()也可以方便地分离事件...
非常感谢阿尔
发布于 2012-08-10 03:33:30
根据这个site绑定到wmp-plugin与像jQuery这样的javascript库不会工作,因为缺少on前缀(应该是"onPlayStateChange"),这通常是所有事件名称的前缀。
像jQuery这样的库考虑到了这个规则...并实际注册到一个不存在的事件。
如果这是真的,那么你需要继续使用attachEvent
https://stackoverflow.com/questions/6804432
复制相似问题