`
zhouyrt
  • 浏览: 1162004 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

webkit/opera中window[name]获取flash对象的特殊实现

    博客分类:
  • BUG
阅读更多

为了兼容多数浏览器,我们一般同时采用object和embed标签插入flash,如下:

 

<object id="mySwf" data="">
	<embed src="" name="mySwf"/>
</object>

 

有时候需要获取到flash对象,因此给object添加了id,给embed添加了name,两者的值刚好相同。此时如果使用window[name]来获取flash对象,各浏览器的表现就不一致了:

 

<object id="mySwf" data="">
	<embed src="" name="mySwf"/>
</object>

<script>
	alert(window['mySwf'])
</script>
 

 

IE :能获取,元素为object

Firefox :undefined,不能获取

Opera :object HTMLCollection

Safari/Chrome :object HTMLCollection

 

可以看到,在Opera/Safar/Chrome获取到的是一个集合HTMLCollection,弹出其length是2,在Opera/Safari/chrome中分别取出第1,2个元素分别是object,embed元素。

 

基本如下:

IE,window['mySwf']中的mySwf指的是Object[id=mySwf]

 

Firefox,window['mySwf']没有获取到任何元素,不支持这么获取

 

Opera/Safari/Chrome,window['mySwf']同时获取id=mySwf,name=mySwf的元素

 

最后列出准确的获取flash对象的方式:

 

function getFlashObj(name){
     return document[name] || window[name];
}

 

这种方式在IE中获取的仍然是object对象,Firefox/Opera/Safari/Chrome中获取的是embed。

 

注意,document[name]和window[name]顺序不能调过来,如下则是错误的

 

function getFlashObj(name){
    return window[name] || document[name];
}
 

此外,也可判断浏览器,以下是钱兄 从adobe官网提供的函数:

 

function thisMovie(movieName) {
         if (navigator.appName.indexOf("Microsoft") != -1) {
             return window[movieName];
         } else {
             return document[movieName];
         }
}
 

如果是IE使用window[movieName],其它浏览器则使用document[movieName]。

 

 

 

分享到:
评论

相关推荐

    python爬虫五万条UA

    CPU iPhone OS 12_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 MQQBrowser/8.9.9 Mobile/16C101 Safari/604.1 MttCustomUA/2 QBWebViewType/1 WKType/1 wap:Mozilla/5.0 (iPhone; ...

    易语言WebKit/Chromium/CEF3多标签浏览器-易语言

    底层基于(Chromium49/51)/(CEF3.2623/CEF3.2704)内核进行制作,支持系统XP,03,Vista,Win7/8/10 32/64。 技术支持:  内核: WebKit/Chromium/CEF3

    易语言-易语言WebKit/Chromium/CEF3多标签浏览器

    内核: WebKit/Chromium/CEF3 (www.cefbuilds.com) 易框架: E(CEF3++) Template Library (www.ps-works.cn,交流,) PS: 关于无法播放flash问题的解决方法: 首先检查系统是否已经安装了相应版本的flash播放器,检查方法:...

    非IE内核 浏览器二开源码 windows/win32/VC++/vs/Webkit/Chrome/Chromium/CEF3

    最新的内核版本 (Version) WebKit 537.36 Chrome 74.0.3729.157 的CMake后的win32下Visual Studio 2015工程,解压后,请用vs2015(或以上)打开Platform-win32目录下cef.sln,本人Debug模式、Release模式下都编译...

    Webkit网址收集

    1. **请求解析**: 当用户输入URL或点击链接时,WebKit首先解析请求并创建一个WebFrame对象来管理页面内容。 2. **资源加载**: WebKit使用网络栈加载HTML、CSS、JavaScript和其他资源。 3. **解析HTML**: 解析器将...

    iphone webkit

    6. **WebRTC**:在支持的版本中,WebKit提供了实时通信功能,实现了视频通话和数据共享等功能。 **开发和调试** 开发基于WebKit的iPhone Web应用,开发者通常会使用Xcode,它是Apple官方的开发工具,集成了WebKit...

    C#在WinForm中使用WebKit传递js对象实现与网页交互的方法

    本篇文章将详细讲解如何在WinForm中使用WebKit控件实现这一功能,特别是在处理IE兼容性问题时的替代方案。 首先,我们来看C#自带的WebBrowser控件。这个控件允许我们在WinForm中嵌入一个浏览器,通过`...

    WEBKIT测试TEST工程

    6. **持续集成**:将测试集成到开发流程中,实现自动化测试,持续监控代码质量。 **六、总结** "WEBKIT测试TEST工程"是一个全方位的测试项目,涵盖了Webkit的各个方面。通过系统性的测试,我们可以确保Webkit的高...

    qt中使用WEBKIT浏览网页的完整代码

    这个项目的源代码可以作为学习如何在 QT 中实现更复杂浏览器功能的参考,例如书签管理、历史记录、多标签支持等。 总的来说,QT WebKit 提供了一个强大且灵活的框架,使得开发者可以在 QT 环境下构建功能完备的网页...

    C# webkit为内核的浏览器打开网页源码(值得下载)

    1. **安装WebKit.NET**:首先,你需要在项目中引用WebKit.NET库。可以通过NuGet包管理器来安装,或者从其官方网站下载最新版本的库并添加到项目中。 2. **创建WebKit控件**:在C#的UI设计界面或代码中,创建一个...

    Java爬取web图片防盗链

    WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.32", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/...

    1.8wUA库.zip

    CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25 Mozilla/5.0 (iPod; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, ...

    Qt Webkit解析html

    Qt WebKit还支持响应JavaScript的`window.alert()`、`window.confirm()`和`window.prompt()`对话框,只需重写`QWebPage`的相应方法: ```cpp class CustomWebPage : public QWebPage { Q_OBJECT public: // ... ...

    移动端浏览器ua大全 合集18248个

    M031 Build/IML74K) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31 MQQBrowser/3.7/Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like ...

    利用QtWebKit完成JavaScript访问C++对象

    在IT领域,尤其是在软件开发中,QtWebKit是一个非常重要的组件,它允许开发者在Qt应用程序中嵌入Web内容,并实现JavaScript与C++之间的交互。本文将深入探讨如何利用QtWebKit完成JavaScript对C++对象的访问,以帮助...

Global site tag (gtag.js) - Google Analytics