浏览器兼容问题,Chrome中Flash的onclick事件
2011-12-08 23:36
525 查看
群里的朋友问了个问题:
chrome下面如何给flash加onclick事件?
搜索了下,找到了一些方法,但那些方法是说其他浏览器的,用一个button包住flash
在Chrome中 embed不支持onclick,但支持onmouseover,onmousedown,onmouseup
就利用这几个方法,自己拼凑一个click事件:
设置一个变量click
over的时候 +1
down的时候 +2
up 的时候 +4
out的时候 清零
发生up的时候,检查click变量,如果是7,那就是click事件了
呃,上面的四个事件都会同时发生两次,所以用了更高位(8)来避免重复事件,并在100毫秒后恢复
chrome下面如何给flash加onclick事件?
搜索了下,找到了一些方法,但那些方法是说其他浏览器的,用一个button包住flash
在Chrome中 embed不支持onclick,但支持onmouseover,onmousedown,onmouseup
就利用这几个方法,自己拼凑一个click事件:
设置一个变量click
over的时候 +1
down的时候 +2
up 的时候 +4
out的时候 清零
发生up的时候,检查click变量,如果是7,那就是click事件了
<div style="border:1px #f00 solid; width:486px"> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="flash_obj" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="468" height="60"> <param name="movie" value="http://static.googleadsserving.cn/pagead/imgad?id=CICAgICQjvvjThDUAxg8MgiCYoyW5NzeKQ"> <param name="quality" value="high"> <param name="AllowScriptAccess" value="never"> <param name="wmode" value="opaque"> <param name="FlashVars" value=""> <embed src="http://static.googleadsserving.cn/pagead/imgad?id=CICAgICQjvvjThDUAxg8MgiCYoyW5NzeKQ" id="flash_embed" width="468" height="60" wmode="opaque" flashvars="" type="application/x-shockwave-flash" allowscriptaccess="never" pluginspage="http://www.macromedia.com/go/getflashplayer" > </object> </div> <script> if(!console){ console = { log: function(){} }; } var timeoutID, c = 0, flashObj = document.getElementById('flash_obj'), flashEmbed = document.getElementById('flash_embed'); function over(){ c |= 1; console.log('mouse over', c); } function out(){ c = 0; console.log('mouse out', c); } function down(){ c |= 2; console.log('mouse down', c); } function up(){ c |= 4; console.log('mouse up', c); if(c === 7){ click(); c |= 8; if(! timeoutID){ console.log('avoid twice click', c); timeoutID = setTimeout(function(){ c ^= 8; //异或,a ^ b, ab不同则返回1 console.log('resume click', c); timeoutID = undefined; },100); } } } function click(){ console.log('trigger click', c); alert('click'); } if(flashObj){ flashObj.onmouseover = over; flashObj.onmouseout = out; flashObj.onmousedown = down; flashObj.onmouseup = up; } if(flashEmbed){ flashEmbed.onmouseover = over; flashEmbed.onmouseout = out; flashEmbed.onmousedown = down; flashEmbed.onmouseup = up; } </script>
呃,上面的四个事件都会同时发生两次,所以用了更高位(8)来避免重复事件,并在100毫秒后恢复
相关文章推荐
- 解决所有浏览器兼容flash ,并解决 Chrome 27.0 的版本不能展示flash 的问题
- 浏览器兼容问题项目总结(三)事件处理机制
- Jquery 日程安排 fullcalender 浏览器兼容问题 bug 事件不显示
- 解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
- WEB前端:浏览器(IE+Chrome+Firefox)常见兼容问题处理--02
- 【转】使用Chrome Frame,彻底解决浏览器兼容问题
- Axure RP Pro - 相关问题 - OnMouseOver事件和Rollover翻转效果浏览器不兼容
- 解决flash在chrome浏览器打印空白的问题
- WEB前端:浏览器(IE+Chrome+Firefox)常见兼容问题处理--03
- 常见的原生javascript事件处理与浏览器兼容问题(上)
- 浏览器兼容问题项目总结(七)IE下未初始化为空,chrome下未初始化生产大量空格
- 关于浏览器兼容的问题以及字符串编码的一个坑,鼠标滚动事件mousewheel和DOMMouseScroll
- 前端学习(2):为document的click事件指定一个事件句柄函数(考虑跨浏览器兼容问题)
- IE内嵌google chrome frame解决浏览器兼容问题
- (造福中国前端界)纯前端Js完美解决各种汉字urlencode,urldecode,编码解码问题,不借助任何字库,内码表,轻松一行,兼容IE8+,chrome,firefox,safari等主流浏览器
- js添加事件、移除事件、阻止冒泡、阻止浏览器默认行为等写法(兼容IE/FF/CHROME) 转载
- Chrome firefox ie等浏览器空格( )兼容问题
- 【转】IE内嵌google chrome frame解决浏览器兼容问题
- js添加事件、移除事件、阻止冒泡、阻止浏览器默认行为等写法(兼容IE/FF/CHROME)
- 浏览器兼容问题项目总结(二)Highchart 在chrome下x轴文字竖直显示(兼容IE和Chrome)