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

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. java提高篇(九)-----详解匿名内部类

    在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始 ...

  2. Swift游戏实战-跑酷熊猫 11 欢迎进入物理世界

    物理模拟是一个奇妙的事情,以此著名的游戏有愤怒的小鸟.我们在这节将会一起来了解如何设置重力,设置物理包围体,碰撞的检测. 要点: 设置物理检测的代理: 让主场景遵循SKPhysicsContactDe ...

  3. java的I/O操作:文件的路径

    package solutions; import java.io.*; /** * Created by Administrator on 2016/3/14. */ public class Re ...

  4. JSP文件编码

    1. pageEncoding: <%@ page pageEncoding="UTF-8"%> jsp页面编码: jsp文件本身的编码 2. contentType: ...

  5. 通过JavaScript设置样式和jQuey设置样式,还有随机数抛出水果的习题

    一:通过JavaScript的方式设置样式(:拿习题为例): var shuiguo = document.getElementById('fruit');     shuiguo.style.bac ...

  6. Windows服务安装异常:System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可 访问的日志: Security

    Windows服务安装异常:System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志.不可 访问的日志: Security 2种方法处理: 一.右键 ...

  7. linux进程自动关闭与dmesg的使用

    一些应用程序,后台服务被关掉.例如内存不足等,可能是操作系统关掉的.这些日志记录在dmesg中. 存储目录:/var/log/dmesg dmesg -T 可以将时间戳转化为可以识别的时间. | he ...

  8. oracle热备份

    1:热备份: SHUTDOWN IMMEDIATE; STARTUP MOUNT; alter database archivelog; --ALTER SYSTEM SET LOG_ARCHIVE_ ...

  9. java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path

    1.system32添加sapjco3.dll 2.tomcat bin下添加sapjco3.dll 3.项目中添加sapjco3.jar 包

  10. Servlet工作原理(转)

    Servlet运行在Servlet容器中,由容器负责Servlet实例的查找及创建工作,并按照Servlet规范的规定调用Servlet的一组方法,这些方法也叫生命周期的方法.具体调用过程如下图所示: ...