致使用flash mp3播放器的博友

前两天,我还刚刚写了一篇很浅显的,关于如何我使用的那个mp3播放器的博文,在我用上它以后,便发现博客在IE下经常报错,刚开始没注意,今天才发现,这报错不是偶尔现象,而是有规律可循。当你第一次打开一个带有播放器的页面后,你再跳转到其它页面的时候,看一看IE的状态栏,肯定有报错信息,海天的这篇文章就是活生生的演示。

作为一个WEB开发人员,我一般都是打开IE的调式功能的,所以那个报错信息,每次都弹出对话框,这种情况我是无法忍受的,只能着手解决这个问题,到网上查了半天,居然发现时Adobe公司的一个bug,个人觉得这是个及其简单的bug,可他们还是通过开发,再通过测试,然后让所有网民都用上的,Adobe公司也有吃错药的时候。

下面终重点说说如何解决这个问题吧,网上查到一些资料,有的话,要给EMBED标签套上OBJECT标签,然后这两个标签都要有加上ID和NAME属性,我试了没用,还有的资料说是重写ACTIONSCRIPT注入到JS的函数,我试了还是没用,但是在他们的基础上改了改代码可以了。

首先,flash mp3 播放器会向JS注入两个函数:

function __flash__addCallback(instance, name) {
  instance[name] = function () { 
    return eval(instance.CallFunction("" + __flash__argumentsToXML(arguments,0) + ""));
  }
}
function __flash__removeCallback(instance, name) {
  instance[name] = null;
}

在调试的时候发现报错的是__flash__removeCallback,这个函数按照网上的资料说是删除播放器下载到内存中的音频数据的,所以还是比较重要的,否则内存会慢慢地被挤满的,目前,我知道的可行方式是重写__flash__removeCallback函数,当然是在JS里重写,Adobe的那套东西,我们肯定无法去重写。

重写函数的时候,灵异的事件发生了,我进行以下形式的重新定义,发现重新定义无效,IE压根就没调用我重写的函数:

window['__flash__removeCallback'] = function (instance, name){
	try {
		if (instance) {
       instance[name] = null;
    }
  } catch (flashEx) {
  }
}

而,如果我加上两句无关紧要的赋值语句,IE便会调用我重写的函数,我被弄的想去撞墙,哎:

window['__flash__removeCallback'] = function (instance, name){
	try {
		var i = 0;
		i = i + 1;
		if (instance) {
       instance[name] = null;
    }
  } catch (flashEx) {
  }
}

懂点代码的博友们,你们觉得var i = 0; i = i + 1;这两个语句有任何作用吗?但就是因为有了这两个废物,我的函数就起作用了,万能的IE,我不得不服。

最后就是将JS引入到博客里面了,对函数的重写,必须要下页面加载完方是最保险的,所以写在footer.php文件的标签后最安全。我是将这几句代码写到一个JS文件里了,要不然还要用PHP的ECHO输出,格式比较麻烦。也就是说在footer.php文件的最后加上以下引用代码即可:

到这里就算基本结束了吧,不过最后还是要鄙视以下Adobe公司写那几行代码的开发人员,然后相关的测试人员,这是很低级的错误,捕获下异常,难道都这么困难吗?目前我博友里的海天无影a shun's blog杂货铺一号苹果三角等都存在这个问题。

今天再补充一段吧,按照上面的思路解决问题的话,不能彻底搞定,当两个页面都有这个播放器的时候,重写的函数会重新被覆盖,导致报错信息依旧,为了大家的身心健康,还是使用优质一点的flash播放器吧,目前我已经改用为另一个,虽然丑了点,但是没有BUG:

小雪转中雪

13 Comments On 致使用flash mp3播放器的博友

  1. avatar

    现在都很少用ie。播放器一直都是用千千静听。感觉还不错。

  2. avatar

    话说 你也说我的ie下有很多错误,但是这些我一点都不懂的哦!呵呵!不知道是不是模板的问题!

  3. avatar

    看见代码就头痛啊 哈哈

  4. avatar

    不懂代码,呵呵。。。

  5. avatar

    HOHO再来看看。欢迎回踩

  6. avatar

    还没遇到过此类。。。

  7. avatar

    我还是在用土豆的播放器。

  8. avatar

    太高深了,,呵呵,,,玩不转…

  9. avatar

    恭喜恭喜,没想到你博客主题好炫哦

  10. avatar

    我一直用的是WP播放器,好像是习惯这个了。

  11. avatar

    呵呵,五一放假了。终于可以休息休息了,有空也去我的网站逛逛哦~

  12. avatar

    五一快乐啊!!
    哈哈,来晚了,还不要介意

  13. avatar

    好久没来了..

| 真的AJAX提交哦

回复给 好心情摄影日志 点击这里取消回复。