再谈IE中Flash控件的自动激活 ObjectWrap

 更新时间:2007年03月09日 00:00:00   作者:  

我在Ajax中国上曾经对比过国内门户网站对Flash激活限制的处理。除了qq.com,各大门户网站上的flash都已经解决了激活限制的问题。淘宝的页面上也常常会使用到Flash,激活限制导致用户的交互性体验感受不够友善。

我们一直想解决此问题。但是国内门户网站的做法都略为麻烦,要么需要为每个flash编写额外的js,要么就是在页面上放置flash的位置打上一块<script>补丁,利用SWFObject或者UFO提供的脚本写入flash。

网易的做法算是最技术的了,它的原理可以简单说一下(感谢在网易工作的朋友的阐析):通过外部引入的js代码覆盖主页面的document.write方法,这样在主页面上利用document.write方法时其实是外部文件的函数来写入的,实现了active控件下载和主页面分离。这样也就避开了激活限制。

可是,以上的所有解决方法,Flash都是通过脚本来写入的。比较注重web标准的网站会附上一段<noscript >来弥补禁用JavaScript的用户。但大多数是置之不理。

一番google(我真的是用了yahoo,不过没找到什么),在SitePoint上发现了一份很有价值的文献ObjectSwap: Bypassing the ActiveX Activation Issue in IE,如获至宝。

ObjectSwap提供的实现只需要在<head>中引入一个脚本。虽然也是使用脚本,但其逻辑是在页面加载完成后,重写一次<object>标签来实现自动激活。页面中的flash依然是标准的HTML。不需要通过document.write写入。而且对于禁用js的用户Flash依然可以正常显示。这应该算是最unobtrusive的一种实现了。

最新的ObjectWrap 可以从这里下载。

原来的脚本有6k,我简化了一些逻辑,并通过条件注释让脚本只为IE6/7服务。让人欣喜的是,不光是Flash,只要是<object>,ObjectWrap都会处理,这样我们在安全登录淘宝或者支付宝输入密码的时候,也可以节约一个单击的气力了。

至于为什么重写<object>可以解决激活限制,就不要深究了,正如IE那一系列让人抓狂的CSS hack。我们只能逼自己记住它,傻瓜才会去弄清楚为什么。

最后向ObjectWrap的作者 Karina Steffens 致敬!

相关文章

  • JavaScript设计模式组合设计模式案例

    JavaScript设计模式组合设计模式案例

    这篇文章主要介绍了JavaScript设计模式组合设计模式案例,组合设计模式是用于将多个部分通过组合的方式行成一个整体,更多相关内容需要的小伙伴可以参考一下
    2022-06-06
  • JavaScript的防抖和节流一起来了解下

    JavaScript的防抖和节流一起来了解下

    这篇文章主要为大家详细介绍了JavaScript的防抖和节流,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • jsonp跨域获取数据的基础教程

    jsonp跨域获取数据的基础教程

    这篇文章主要给大家介绍了关于jsonp跨域获取数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • 前端终止请求的3种方式总结(ajax、axios)

    前端终止请求的3种方式总结(ajax、axios)

    这篇文章主要给大家总结介绍了关于前端终止请求的3种方式,其中包括ajax、axios的相关资料, 取消请求在前端有时候会用到,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • OpenLayers3实现地图显示功能

    OpenLayers3实现地图显示功能

    这篇文章主要为大家详细介绍了OpenLayers3实现地图显示功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • javascript iframe跨域详解

    javascript iframe跨域详解

    这篇文章主要介绍了javascript iframe跨域详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • js闭包用法实例详解

    js闭包用法实例详解

    这篇文章主要介绍了js闭包用法,结合实例形式分析了JS闭包的概念、功能及相关操作技巧,需要的朋友可以参考下
    2016-12-12
  • JavaScript深度复制(deep clone)的实现方法

    JavaScript深度复制(deep clone)的实现方法

    本文给大家介绍JavaScript深度复制(deep clone)的实现方法,涉及到js深度复制相关知识,本文介绍的非常详细,特此分享脚本之家平台供大家参考
    2016-02-02
  • JavaScript入门教程之引用类型

    JavaScript入门教程之引用类型

    引用类型是一种数据结构,用于将数据和功能组织在一起。这篇文章主要介绍了JavaScript入门教程之引用类型的相关资料,需要的朋友一起学习吧
    2016-05-05
  • JavaScript SHA1加密算法实现详细代码

    JavaScript SHA1加密算法实现详细代码

    这篇文章主要为大家详细介绍了JavaScript SHA1加密算法实现代码,具有一定的参考价值,感兴趣的朋友可以参考一下
    2016-10-10

最新评论