这两天做这个项目略有收获,记录如下:

1. 项目中有个bug,在IE7中登录成功时下拉菜单没有展开的情况下总有个残影在页面中,如下图所示:

通过多种方法都没有解决,后来才知道原来是在IE中display:none元素如果有父子关系,要先none里面的子元素,在none外边的父元素。
据说在显示的时候要相反先显示里面的子元素,再显示父元素,不过这次我没有碰到需要这样处理的问题,实在也懒的测试了,IE实在是太坑了,这个问题基本整了一天,谢谢栋栋同学帮忙解决这个问题。
 
2.在之前同事写的下拉菜单类代码中用到了一个方法,代码如下:
 var fixHover = function(elem, fn) {
         return function(e) {
             var target = elem;
             var relatedTarget = e.relatedTarget || e.fromElement;
             if( !relatedTarget || ( target !== relatedTarget &&
                 !contains(target, relatedTarget) ) ) {
                 fn.apply(target, arguments);
             }
         };
     };

(此代码在我电脑上的路径:D:\workspace\sso\v1\apps\user_panel\js\comp\dropmenu.js)

其中contains是一个STK的方法意思是后一个参数元素是否被前一个包含,这个不是重点,先不提。
fixHover这个方法是为了鼠标悬浮的元素中有子元素的话,虽然是在父元素上绑的事件,但当鼠标移动到子元素时事件方法又会执行一次,使性能降低,用了这个方法在绑定事件时代理下回调函数要好的多。
另外,以前见过relatedTarget这个事件参数属性,一直不太明白他和target事件参数属性的关系,今天查了下才知道,原来relatedTarget事件属性只在mouseover和mouseout事件中才有用,就是事件移动进去或出去之前那个元素的指针。具体参考地址:http://www.w3school.com.cn/jsref/event_relatedtarget.asp
 
3. 关于折行的字符串如何拼接,特别是当代码中出现html字符串时,必须要折行并缩进才能看的清楚,以前一直使用数组然后用join('')这种方法来拼接,这次发现了一个简单的方法,直接在换行时加个‘\’就可以拼接字符串了,不过这样缩进并不会被消除,但是在拼接html时应该问题不大,毕竟标签之间无论多少空格和缩进都会被浏览器解析为一个空格。
但是有同事说这种拼接的方法要比数组拼接性能低,还有待考证,有空时查查资料吧。
刚找到一篇介绍这个‘\’的文章:http://www.veryhuo.com/a/view/44795.html
他觉得使用这个在代码压缩时会有危险,但是我的代码压缩之后把那个‘\’去掉了,没有出问题。
 
时间: 2014-03-13 17:30:50 

浪首登录浮层增加收藏入口项目学到的几点知识-IE7 bug、relatedTarget、字符串换行的更多相关文章

  1. webpack 实现的多入口项目脚手架

    简介 基于 webpack2 实现的多入口项目脚手架,主要使用 extract-text-webpack-plugin 实现 js .css 公共代码提取,html-webpack-plugin 实现 ...

  2. 使用 webpack 搭建多入口项目

    闲来无事,学习一下怎么用 webpack 自定义多入口项目的打包 项目github地址:https://github.com/xiaoliwang2016/webpack-demo 先来看一下目录结构 ...

  3. js增加收藏

    <html> <span style="white-space:pre"> </span><head> <span style ...

  4. 纯JS设置首页,增加收藏,获取URL參数,解决中文乱码

    雪影工作室版权全部,转载请注明[http://blog.csdn.net/lina791211] 1.前言 纯Javascript 设置首页,增加收藏. 2.设置首页 // 设置为主页 functio ...

  5. Photon Server 实现注册与登录(一) --- Hibernate整合到项目中

    本系列实现目的:基于Photon Server实现注册于登录 一.拷贝Nbibernate项目的文件到MyGamerServer项目中. 二.数据库新建表,结构如下 三.修改文件名和配置 (1).将拷 ...

  6. 重磅!业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目

    摘要:4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目. 4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个 ...

  7. 三:后台的登录注册接口(moon项目,前面有一,二)

    ** 项目一共有 16 个页面,是一个电商网销项目,自己在网上的某网上找的一个要做的网站的设计图: 页面主要包括:  登录页 -- 注册页 -- 首页 -- 产品列表页 -- 产品详情页 -- 会员中 ...

  8. 14. vue源码入口+项目结构分析

    一. vue源码 我们安装好vue以后, 如何了解vue的的代码结构, 从哪里下手呢? 1.1. vue源码入口 vue的入口是package.json 来分别看看是什么含义 dependences: ...

  9. 2017.6.30 用shiro实现并发登录人数控制(实际项目中的实现)

    之前的学习总结:http://www.cnblogs.com/lyh421/p/6698871.html 1.kickout功能描述 如果将配置文件中的kickout设置为true,则在另处再次登录时 ...

随机推荐

  1. UIButton详解

    // ----------------------------------UIButton------------------------------ // UIButtonTypeSystem 点击 ...

  2. Java基础之泛型——使用通配符类型参数(TryWildCard)

    控制台程序 使用通配符类型参数可以设定方法的参数类型,其中的代码对于泛型类的实际类型参数不能有任何依赖.如果将方法的参数类型设定为Binary<?>,那么方法可以接受BinaryTree& ...

  3. Android项目目录结构分析

    Android项目目录结构分析 1.HelloWorld项目的目录结构1.1.src文件夹1.2.gen文件夹1.3.Android 2.1文件夹1.4.assets 1.5.res文件夹1.6.An ...

  4. 刷新本地的DNS缓存

    用“WIN +R”快捷键打开运行窗口,输入“cmd”命令,进行命令行窗口.

  5. MySQL 常用函数列表

    一.数学函数 select SQRT (2) --取平方根select ABS (-234) --取绝对值select FLOOR (COUNT (*)/5.0) from news --取小于这个小 ...

  6. MAT之prim算法

    prim算法 边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权. 最小生成树(MST):权值最小的生成树. 生成树和最小生成树的应用:要连通n个城市需要n-1 ...

  7. 结构体. ->操作符的内涵

    实质上就是结构体成员相对于结构体大变量的偏移地址, 操作符所干的事情就是寻址.是偏移,是偏移,是偏移.偏移后的地址

  8. cordova3.X 运用grunt生成plugin自定义插件骨架

    Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头.麦克风等.Cordova还提供了一组统一的JavaScript类库,以及为这些 ...

  9. strcpy  复制字符串函数

    #include<stdio.h> #include<assert.h> char *strcopy(char * strDest , const char * strSrc) ...

  10. LDA-math-MCMC 和 Gibbs Sampling

    http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/ 3.1 随机模拟 随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Mon ...