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

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. MongoDB分片集群还原

    从mongodb 3.0开始,mongorestore还原的时候,需要一个运行着的实例.早期的版本没有这个要求. 1.为每个分片部署一个复制集 (1)复制集中的每个成员启动一个mongod mongo ...

  2. JS语法部分-数组

    数组的长度是动态变化的,里面可以防止任意类型的元素 var a=new Array() 数组元素的复制:a[0]=123        a[2]=456 数组的取值:a[i] 数组的属性:  a.le ...

  3. topsort

    top排序每次入队的是限制情况为0的... 就可以直接记录了,每次出队的就也是为0的,出队结果对每个子节点或者被限制节点,的限制条件-1 然后再判断有没有后继有没有为0的,有就入队! 出入队一次,找后 ...

  4. (转载)R14也称作子程序连接寄存器

    R14也称作子程序连接寄存器(Subroutine Link Register)或连接寄存器LR.当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份. 其他情况下,R14用作通用寄 ...

  5. java 虚拟机工具

    jps 命令 可以查询开启了rmi服务的远程虚拟机进程状态. -v jvm参数. jstat -gcutil命令 [cangyue@/System/Library/Frameworks/JavaVM. ...

  6. 【pyQuery】抓取startup news首页

    #! /usr/bin/python # coding: utf-8 from pyquery import PyQuery c=PyQuery('http://news.dbanotes.net/' ...

  7. 图像处理之常用颜色RGB、灰度值

    128/0/0       深红         255/0/0       红           255/0/255     粉红        255/153/204 玫瑰红       153 ...

  8. uml定义的使用的关系

    uml定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. 依赖 (Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B ...

  9. OpenStack 镜像制作

    Contents [hide] 1 Centos6.5 img制作 1.1 基础环境安装 1.2 下载或从本地上传系统镜像 1.3 启动服务 1.4 建立镜像文件 1.5 通过virt-install ...

  10. 机器学习实战5:k-means聚类:二分k均值聚类+地理位置聚簇实例

    k-均值聚类是非监督学习的一种,输入必须指定聚簇中心个数k.k均值是基于相似度的聚类,为没有标签的一簇实例分为一类. 一 经典的k-均值聚类 思路: 1 随机创建k个质心(k必须指定,二维的很容易确定 ...