问题- playStateChange, Mediaplayer对象IE9 ..试图让Jquery bind()在这个事

Javascript / Jquery Problem with - playStateChange , Mediaplayer object IE9 ... trying to make Jquery bind() work on this event ...Read On

本文关键字:bind Jquery playStateChange Mediaplayer 对象 IE9 问题      更新时间:2023-09-26

问题就在这里....

我首先试图排除是否使用flash播放器,html5播放器或媒体播放器为这个客户端.....HTML5似乎是提供实现插件免费,所以我决定选择退出Flash ....考虑走HTML5路线……一切都好……做了一个很好的播放器,它也是跨浏览器的,并且很好地照顾了编解码器,但是哎呀……意识到html5不能流化ASX…所以又回到了旧的Windows mediaplayer路线....我别无选择....

我放了一个javascript函数,它只是一个警报,应该在媒体播放器改变状态时触发(比如从播放中暂停它....)

function WMP_status()
{
   alert("state Changed");
}

我在html页面上嵌入了一个媒体播放器对象,我在javascript中创建了一个别名,以编程方式访问该对象,并通过javascript ......获得对它的控制像这样....

var WMP=document.getElementById("mediaplayer");

接下来就轮到捕捉媒体播放器的状态了……所以我需要某种形式的事件所以我注册了这样的事件....并且工作得很好…

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); 

我可能认为addEventListener在IE9中仍然没有正确实现,所以我尝试使用JQuery bind()方法,如....但还是不开心....

$(WMP).bind("playStateChange", WMP_status); 

我也尝试了这两个变体

(a)仍无喜悦....

$(WMP).bind("playStateChange", "WMP_status"); 

(b)仍无喜悦.....

$(WMP).bind("playStateChange", function(){WMP_status()}); 

我尝试了这些来消除各种可能性…没有jquery网站上的信息,我是否可以放入一个函数名或不…所以我也试着写了一个匿名的....

不管怎样…我真的更喜欢使用Jquery机制来处理事件,特别是因为它更跨浏览器…有人能帮我解决这个问题吗?我还走了动态附加事件的这条路,因为我将通过jquery添加/删除元素…而remove()也可以方便地分离事件…

多谢艾尔。

根据此站点绑定wmp-plugin与javascript库,如jQuery将无法工作,因为缺少on前缀(将读取"onPlayStateChange"),这通常是前缀所有事件名称

像jQuery这样的库考虑了这一规则…并实际注册到一个不存在的事件。

如果这是真的,那么你需要继续使用attachEvent