我不是作网页设计的,因此碰到这个问题时感受好偏啊,不过,最后有幸解决了,高兴一下,也总结一下。
浏览器
问题的状况是这样的,作了一个页面,页面中有一个日期选择的js,日期下面是FusionChartsFree 生成的flash图表,他们都是放在div标签里面的,在页面加载完成后,点击日期选择时,出现的日期图片被flash遮住了,无法选择。this
我猜就是div有层次的问题,因而我就在网上查资料,有点收获,知道div层次是能够用z-index 来设置的。可是对这两个div ,我怎么设置就没效果,日期依然在flash下面。正当我准备放弃的时候,忽然想到是否是flash有些特殊呢,而后我又在网上搜了一下,发现了这篇文章spa
引用firefox
<param name="WMODE" value="transparent">设计
<param name="wmode" value="Opaque">orm
<param name="wmode" value="Window">对象
NOTE: 支持其它浏览器(firefox opera etc.) 则使用 <embed wmode="transparent" />在embed节点中加入wmode值.图片
window 模式开发
默认状况下的显示模式,在这种模式下flash player有本身的窗口句柄,这就意味着flash影片是存在于Windows中的一个显示实例,而且是在浏览器核心显示窗口之上的,因此flash只 是貌似显示在浏览器中,但这也是flash最快最有效率的渲染模式。因为他是独立于浏览器的HTML渲染表面,这就致使默认显示方式下flash老是会遮 住位置与他重合的全部DHTML层。flash
可是大多数苹果电脑浏览器会容许DHTML层显示在flash之上,但当flash影片播放时会出现比较诡异的现象,好比DHTML层像被flash刮掉一块同样显示异常。
Opaque 模式
这是一种无窗口模式,在这种状况下flash player没有本身的窗口句柄,这就须要浏览器须要告诉flash player在浏览器的渲染表面绘制的时间和位置。这时flash影片就不会在高于浏览器HTML渲染表面而是与其余元素同样在同一个页面上,所以你就可 以使用z-index值来控制DHTML元素是遮盖flash或者被遮盖。
Transparent 模式
透明模式,在这种模式下flash player会将stage的背景色alpha值将为0而且只会绘制stage上真实可见的对象,一样你也能够使用z-index来控制flash影片的 深度值,可是与Opaque模式不一样的是这样作会下降flash影片的回放效果,并且在9.0.115以前的flash player版本设置wmode=”opaque”或”transparent”会致使全屏模式失效。
了解了各类模式的实现方式和意义在之后的开发中就能够按照具体状况选择设置wmode属性的值了。
看完这个我明白了,把flash的wmode设置成opaque就好了,剩下的事情就是改FusionCharts的参数了,这东西今天刚刚试着在用,把他的js文件拿出来看了一遍才知道怎么设置,在页面上加载flash的js代码中加上这句
chart.addParam("wmode","Opaque");就ok了~
今天使用swfobject,居然发现没有参数指定swf透明。汗~~
不过能够看看它源代码,而后稍作修改:
一、在 swfobject.js 里面找到:
if(c){this.addParam(”bgcolor”,c);}
2:改成if(c){this.addParam(”bgcolor”,c);} else {this.addParam(”wmode”,”transparent”);}
3:传递背景颜色为空:
var so = new SWFObject(”test.swf”, “test”, “550″, “400″, “9″, null);
so.write(”flashcontent);
其实还能够这样:
var so = new SWFObject(”test.swf”, “test”, “550″, “400″, “9″, “#ffffff”);
so.addParam(”quality”, “low”);
so.addParam(”wmode”, “transparent”);
so.addParam(”salign”, “t”);
so.write(”flashcontent”);