html与嵌入其中的flash均存在滚动条的情况处理

我们在做开发时经常会遇到这种情况:

    a.swf被添加到网页中, a.swf和html页面同时存在滚动条, 项目经理提了一个BT的需求---处理a.swf鼠标滚动的时候html页面不执行滚动, 反之则执行html页面的滚动!

 

应该怎么做呢?

方法1:

1.鼠标移入a.swf滚动区域的时候: 告知JS移除浏览器鼠标滚动监听.

2.鼠标移出a.swf滚动区域的时候: 告知JS添加浏览器鼠标滚动监听.

3.a.swf的wmode设置为"window".

总结: wmode设置为"window"可能会不满足项目需求, 这使得a.swf遮挡住任何在其之下的html页面; 另外鼠标移入a.swf滚动区域后按Alt+Tab切换页面时没有告知JS添加浏览器鼠标滚动监听, 所以在操作之后切回到html页面中是没有滚动处理的

 

方法2:

1.a.swf取消自身的鼠标滚动监听事件, 添加滚动处理接口供JS调用, 例如wheelToFlash(value).

 

2.鼠标移入a.swf滚动区域的时候: 告知JS, 例如mouseIsInFlashWheelRange=true.

3.鼠标移出a.swf滚动区域的时候: 告知JS, 例如mouseIsInFlashWheelRange=false;

4.JS监听鼠标滚动事件, 在事件监听处理函数中我们需要做如下判断

 

if(mouseIsInFlashWheelRange==true)
{
    /**调用a.swf提供的接口使a.swf模拟滚动*/
    /**"flash"是html嵌入的a.swf的ID, value为html滚表滚动的值*/
    document.getElementById("flashID").wheelToFlash(value);

    /**阻止html页面鼠标事件的冒泡, 通常是event.preventDefault()*/
    event.preventDefault();
}
else
{
    /**处理html正常的滚动, 我们可以什么都不需要做*/
}

 总结: 与方法1相比没有了wmode="window"的限制; Alt+Tab的问题仍然存在。

 

注意: 在写JS代码的时候我们需要注意兼容性的问题, 不同浏览器对鼠标事件的监听以及滚动值的获取均不相同!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值