摘要: 我们知道 众浏览器的js引擎 在 for in 反射 某对象成员时 是一次性获该对象的 比如var obj={a:1};for (var o in obj){obj={a:1,b:2};}整个for 循环 只会执行一次 及时我们再循环内部改变了obj 的引用 但是 反射对象始终是 in后面那个obj的原始引用 .也可以称作 for in 缓存了被反射对象.但是我们看看另外一种情况var obj={a:1};var i=0;for (var o in obj){obj.b=2;i++;}alert(i);这里 浏览器出现了不一致性. 非ie浏览器 打印 1 而 ie 则打印2…再说顺序问题 :I 阅读全文
posted @ 2010-05-08 13:51 Franky 阅读(2121) 评论(4) 推荐(2) 编辑
摘要: js 内置对象 RegExp 我们用的很习惯 也很舒服 但是里面却有 严重的隐患 或者陷阱...原因在于 有些浏览器 对正则表达式直接量的优化.在本章开始前 我要引入一个例子 来说明这种不彻底的 变态的优化 到底合理还是不合理...c# 中的 字符串直接量 做的优化 就非常彻底...这种优化我们应该是欢迎的...string str="franky";string str2="franky";在内存中 只有一份 字符串对象 而str和str2 具备相同的一份引用. 很明显 这非常合理.string n = "franky", n2 = 阅读全文
posted @ 2010-05-02 02:29 Franky 阅读(4078) 评论(7) 推荐(4) 编辑
摘要: 昨天去 大牛 司徒正美 的blog 看博文 突然看到关于 onmouseenter 和onmouseleave 两个ie专有事件..写了这么久 js应用 我居然不知道这两个事件 于是 去google搜索了一番. 才发现这两个事件 是如此的优秀 且好用... 但搜索过程中 发现 好多人 似乎不太明白这两个事件 和mouseover mouseout 真正的区别 和用途.. 并且看到google中搜索得到的一些朋友 实现的 跨浏览器 解决方案. 觉得似乎有些繁琐...所以产生了写一篇blog 把这玩意 说透彻的冲动... 好啦.我们进入正题.对于 mouseover 和mouseenter 两个事 阅读全文
posted @ 2010-05-01 16:20 Franky 阅读(3601) 评论(5) 推荐(0) 编辑
摘要: 2个计时器方法的异同...如果期望多次回调 某方法 出于性能考虑 应使用 setInterval出于 稳定 回调间隔考虑 应使用setTimeout方法 如var timer;function f(){if(条件) clearInterval(timer)//注 clearTimeout clearInterval 都可以清除 setTimeout和setInterval 产生的时间戳对象setTimeout(f,间隔时间)}使用setTimeout 应吧该语句放到 当前上下文环境 的最后一行 调用 以便获取可靠的 时间间隔..原因是setTimeout(function(){dosometh 阅读全文
posted @ 2010-04-30 22:55 Franky 阅读(3768) 评论(0) 推荐(0) 编辑
摘要: 焦点事件 对于提高用户体验 无疑是有着 至关重要的作用... 但是使用他的同时 往往也会 给我们带来一些困扰...先说个 借助焦点 解决一个 弹出菜单 的问题 的另类方案.以往我们对于 弹出式菜单的 关闭 有以下几个方案.1. 当鼠标离开当前div时 菜单即隐藏 或者 setTimeout 隐藏 如果 鼠标及时的回到菜单上 清除setTimeout的计时器.2. 注册document.onclic... 阅读全文
posted @ 2010-04-28 02:57 Franky 阅读(6395) 评论(4) 推荐(4) 编辑
摘要: Function.prototype.Apply = function(obj, arr) { obj = obj || window; obj._tempFunction = this; var rv; if (!arr) rv = obj._tempFunction(); else { var args = []; for (var i = 0, len = arr.length; i <... 阅读全文
posted @ 2010-04-07 00:38 Franky 阅读(1081) 评论(0) 推荐(1) 编辑
摘要: bug 描述 当 element 的 css font-size:100% 此类百分比值的时候 我们将得到的是个错误的值 而这个值是什么呢? 也许大家猜到了。 是的 就是父容器的 clientWidth*这个百分比 之所以会这样的原因是 因为 他的代码如下:if(elem.currentStyle){//r=elem.currentStyle [ styleString];//取到相应css属性的最终渲染值if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {var left = style.left, rsLeft = elem.ru 阅读全文
posted @ 2009-11-29 12:29 Franky 阅读(3055) 评论(2) 推荐(0) 编辑
摘要: 在叙述之前 先说下 万幸 这个bug opera10已经修复了divElement是一个 div元素 默认样式 width:100px;border-width:0:window.setTimeout(function() { divElement.style.borderWidth = '20px'; }, 100);当setTimeout回调 来改变某div的borderWidth的时候 op... 阅读全文
posted @ 2009-11-26 13:56 Franky 阅读(351) 评论(1) 推荐(0) 编辑
摘要: .目前 主流的判断方式 是var obj='franky';return Object.prototype.toString.call(obj)=='object String'; 这种方式..不得不说 这种方式很优秀 除了代码量比较多一些... 但是它在 非ie浏览器中的性能表现十分优秀...有些朋友可能会奇怪 这个不是专门判断是不是 Array的么. 考虑到typeof 返回 object 以... 阅读全文
posted @ 2009-08-17 00:21 Franky 阅读(608) 评论(1) 推荐(3) 编辑
摘要: 前两天 写段脚本 在给某个层加了float以后 忘了去掉 就直接 用脚本更改了 他为绝对定位 position:absolute 然后设置了坐标...再然后 给document对象注册onclick事件 去触发 显示隐藏该层 ... 这样做 safari3 和chrome 就崩溃了 safari4没测试 不知道bug是否依然存在当时发现只要我点鼠标就崩溃 以为是注册事件的问题.. 我取消了注册的document.onclick事件侦听以后手动代码反复调用该层 show hidden 不会崩溃....一筹莫展的时候 突然发现我只要把 该层原来的兄弟div 在html中去掉就不会出现这个问题... 阅读全文
posted @ 2009-04-16 13:24 Franky 阅读(2132) 评论(9) 推荐(0) 编辑