概述

在FF浏览器中有这样一个bug,就是当鼠标hover在flash区域的时候,滚轮会失效。原因是ff浏览器没有把滚轮事件嵌入到flash里面去。如果这个flash很小的话,比如直播的视频,会很容易解决;如果这个flash很大占满全屏的话,就会严重影响到体验了。下面是我查资料实践出来的2个解决方案,供以后开发时参考。

加一层蒙版

第一种解决方法是在flash的上层加一层透明的蒙版。一般来说,会在flash上面放各种内容,这个时候把这些内容放在一个蒙版里面,并且把这个蒙版的大小设置为和flash一般大就可以了。

这个方法的优点是,滑动非常顺畅,改动方便;缺点是如果flash要触发一些hover事件的话就不能实现了。因为上面有一层蒙版。

代码模拟滚轮

可以用js监测滚轮事件,并且控制滚轮滚动。

代码如下:

var isFF = navigator.userAgent.toLowerCase().indexOf('firefox');
var scroll = $(window).scrollTop();
var delta = event.detail / 3;
var mousewheel=function(event) {
var event = event ? event : window.event;
var obj = event.srcElement;
if (!obj) {
obj = event.target;
}
if(isFF > 0) {
$(window).scrollTop(scroll + delta*20);
event.preventDefault();
event.stopPropagation();
} else {
return false;
}
};
if(isFF > 0) {
document.body.addEventListener("DOMMouseScroll", mousewheel, false);
document.body.onmousewheel=mousewheel;
}

这种方法的优点是没有什么副作用,缺点是滚动很僵硬,不够顺滑。

思考

受上面jq模拟滚轮的启发,有如下思考:

  1. 是不是可以自己来实现滚动区域?但是怎么实现滚动顺滑?
  2. 如果滚动滚轮触发的是滚动一整个页面,是不是可以做单屏了?

以后再探究了。

FF中flash滚轮失效的解决方案的更多相关文章

  1. jQuery ZeroClipboard中Flash定位不准确的解决方案

    转自波斯马,原文地址<jQuery ZeroClipboard中Flash定位不准确的解决方案> jQuery ZeroClipboard支持在多种浏览器中复制内容到剪贴板,IE.Fire ...

  2. 关于YiII框架的扩展memcache中set设置时间就get查询失效的解决方案(版本是1.1.20)

    0x01 前言 在使用Yii框架的扩展memcache缓存的时候,存储数据有一个set方法,来看一下set方法的原型: public boolean set(string $id, mixed $va ...

  3. Linux配置完iptables后,重启失效的解决方案

    Linux配置完iptables后,重启失效的解决方案 因为只有root用户才可访问1024以下的端口,非root用户登陆是不能启用80端口的.web service 往往启动1024以上的端口,并通 ...

  4. shiro中部分SpringCache失效问题

    原文:https://www.cnblogs.com/liruiloveparents/p/9392159.html shiro中部分SpringCache失效问题   1.问题抛出 今天在做Spri ...

  5. 关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】

    最近一直用ASP.NET MVC 4.0 +LINQ TO SQL来开发设计公司内部多个业务系统网站,在这其中发现了一些问题,也花了不少时间来查找相关资料或请教高人,最终都还算解决了,现在我将这些问题 ...

  6. js中鼠标滚轮事件详解

    js中鼠标滚轮事件详解   (以下内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ ) 之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用 ...

  7. jquery中Live方法不可用,Jquery中Live方法失效

    jquery中Live方法不可用,Jquery中Live方法失效 >>>>>>>>>>>>>>>>> ...

  8. td中使用overflow:hidden; 无效解决方案

    td中使用overflow:hidden; 无效解决方案 >>>>>>>>>>>>>>>>>> ...

  9. jQuery的live绑定事件在mobile safari(iphone / ipad / ipod)上失效的解决方案

    jQuery的live绑定为什么会在mobile safari上失效呢?其实可以追溯到jQuery里live的实现方式.live的实现方式实际上是通过事件委托机制来实现的,也就是说是通过诸如冒泡的方式 ...

随机推荐

  1. 解决Dynamic Web Module 3.1 requires Java 1.7 or newer

    需要检查和确认Eclipse项目属性的java版本和本地jdk的版本一致,以1.7版本为例: 1. 在 Java Build Path的libraries中修改对应的JDK版本为1.7: 2.在Jav ...

  2. ng环境搭建步骤

    1,安装node node -v查看版本号 2,安装淘宝镜像 npm config set registry https://registry.npm.taobao.org 3,安装cnpm npm ...

  3. Thread类与Runnable接口的深入理解

    Thread类与Runnable接口的深入理解1.Thread类实现了Runnable接口,实现run方法,其中target参数对应的就是一个Runnable接口的实现类 @Override publ ...

  4. spring boot利用controller来测试写的类

    我们在开发spring boot应用程序的时候,往往需要测试某个写好的类,但是在测试的时候发现不太好测试,用Junit等测试框架,总是会报一些问题,大致是找不到配置文件以及无法利用spring创建的对 ...

  5. django ajax提交form表单数据

    后台: from django.shortcuts import render from django.shortcuts import redirect from django.shortcuts ...

  6. ubuntu 18.04配置静态ip,解决无法上网问题,解决resolv.conf配置文件被覆盖

    Netplan 是 Ubuntu 17.10 中引入的一种新的命令行网络配置实用程序,用于在 Ubuntu 系统中轻松管理和配置网络设置. 它允许您使用 YAML 格式的描述文件来抽像化定义网络接口的 ...

  7. 使用kbmMWConfiguration 让 kbmmw smartservice 更聪明

    以前的文章介绍了 很多 kbmmw smartservice 的使用,尤其是 rest 服务,所有的的配置都是通过 开发时写编码实现的,这样就可能导致,针对不同的应用环境,我们要重新编译代码,当然也可 ...

  8. Codeforces 845 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 A题 传送门 题意:2n2n2n个人下棋,分为两个阵营,每个阵营nnn个人,每个人有一个积分,积分高的能赢积分低的,问如果你可以随意选人,然 ...

  9. mvc开发网站打开慢总结

    开始学习mvc开发网站的时候,看了传智博客的视频教程,其中学习了一个和牛逼的框架,开始激动的深入学习,学完后却发现其实那套框架太重并不适合一些中小型的网站开发,并且也使用导航属性关联外键,导致打开网站 ...

  10. python_flask框架学习之路(1)

    1.初识web,了解utl . 术语: scheme://host:port/path?query-string=xxx#yyyy 例子:https://i.cnblogs.com/EditArtic ...