前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flash在网页应用中的一些特殊应用场景

flash在网页应用中的一些特殊应用场景

作者头像
meteoric
修改2019-02-25 16:47:13
9720
修改2019-02-25 16:47:13
举报
文章被收录于专栏:游戏杂谈游戏杂谈

一般flash在网页显示出来就可以了,不用说与JavaScript之间交互的问题,但有时应用又较为特殊(须兼容各主流浏览器):

1、网页中屏蔽flash的右键

2、点击flash广告打开新窗口

3、在不透明的情况下,要在flash之上弹出浮动层(设置flash为透明很容易解决掉这个问题)

这里其实分了三类:

1、设置flash的参数wmode为transparent可以解决问题的

2、使用DOM绝对定位覆盖flash可以解决问题的

3、使用其它技巧来解决问题的

前两种其实没什么太多可讲的,因为网上已经有太多的例子

屏蔽flash的右键 (缺点:就是必须要将flash设置为透明,不设置为透明如何实现暂时没找到方案)

可以参考这里《轻松去掉web中flash右键菜单》,在线Demo的例子

很多时候网页中的flash应用都是用作广告,可广告也有问题,如果点击时调用JS,使用window.open可能会被浏览器拦截掉,达不到预期的效果,针对这一类的应用,解决方案就是让a元素把flash盖住,用户其实点击的是a元素(加上属性target=”_blank”)

-----------这类应用,不一定非得要求将flash设置为透明

腾讯首页为例:

image
image

这时是一块小广告,其实它是flash,只不过被A元素给“盖”住了。

image
image

主容器为relative(相对定位),flash的object元素正常插入即可,后面的A元素设置为absolute(绝对定位),然后给A元素设置链接和一些其它属性就达到要求了,应该来说很简单。

不过实现这种需求有两种方法:

1、给a设置一个background-image(1px*1px且透明的gif即可),然后平铺

2、设置background-color,然后使用opactity(透明度)

腾讯首页使用的是方法二,省了一张图片

重点来说说第三种应用场景:不能设置flash为透明,要实现弹出浮动层的效果。

1、为什么不能设置flash为透明

2、不设置flash为透明,直接弹出浮动层遇到了什么问题

3、如何解决遇到的问题

a、flash不能设置为透明的原因,据我以前接触过的应用来讲,一款使用flex开发的webgame,如果将其网页中的参数设置为透明(wmode=transparent)会产生一些莫名其妙的bug,最终的方案是必须放弃设置透明

b、遇到的问题就是弹出的浮动,很容易被flash给“吃掉”,但改变页面大小或是做一些其它操作时,它又会被“吐出来”

c、其它浏览器下使用iframe倒是可以解决问题,郁闷的就是IE这一系列如何解决,而且玩游戏的玩家,根据第三方统计工具来看占有超过80%的访问量

后来玩意看到一个应用,它就实现上述的效果,没有将flash设置为透明,但在IE下拖动浮动层还很流畅,后来从里面找到了方案

代码语言:javascript
复制
window.ActiveXObject && addEvent(document, "focusout", function () {
    document.body.style.zoom = 0;
    document.body.style.zoom = 1;
});

没错,就是这三行代码就解决了上述的问题。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>swf测试</title> <style type='text/css'> * {margin:0; padding:0;} body {width:100%; height:100%; overflow:hidden; color:#fff;} .dialog {border:1px solid #60b0f3; background-color:#8bd3ff;} </style> </head> <body> <div style="margin:20px; position:relative; z-index:-1;"> <div id="mainGame"></div> </div> <div class="dialog" style="width:300px; height:190px; position:absolute; top:200px; left:160px; z-index:9999999;" id="dialog2"> <div> <div style="height:32px; line-height:32px; padding-left:20px;"><h3>浮动框</h3></div> <div style="margin:5px 10px; background-color:#fff;"> <div style="width:100%; height:140px;">asdf</div> </div> </div> <iframe style="z-index:-1; position:absolute; filter:alpha(opacity=0); opacity:0; border:none; left:-1px; top:-1px; width:100%; height:100%;" src="javascript:;" frameBorder="0"> </iframe> </div> </body> </html> 预览代码

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2011-07-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档