webkit 引擎的 bug 以及 safari4 beta版的 严重bug
前两天 写段脚本 在给某个层加了float以后 忘了去掉 就直接 用脚本更改了 他为绝对定位 position:absolute 然后设置了坐标...
再然后 给document对象注册onclick事件 去触发 显示隐藏该层 ... 这样做 safari3 和chrome 就崩溃了 safari4没测试 不知道bug是否依然存在
当时发现只要我点鼠标就崩溃 以为是注册事件的问题.. 我取消了注册的document.onclick事件侦听以后手动代码反复调用该层 show hidden 不会崩溃....
一筹莫展的时候 突然发现我只要把 该层原来的兄弟div 在html中去掉就不会出现这个问题... 经过反复测试 总结bug 如下
当一个 div有了浮动 并且同时他有兄弟节点是block 元素的时候. 如果此时 我们没有去掉浮动的情况下 就直接 把该div 设置 绝对定位 然后通过 浏览器事件去回调 该层的显示和隐藏... webkit引擎 (测试safari3 和 chrome) 就会因为搞不清楚 如何渲染 该层和 他兄弟block元素之间的关系 而导致崩溃!!!
所以 我们只要记得 设置某元素 为绝对定位前 一定要看看他是不是具有浮动 如果有 则要清除掉...
再说下 safari4 beta 的问题
如下代码 函数体中
try{
return obj;
}
finally{
obj=null;
}
无论是js 还是c# 都将正常 返回 obj 并且因为我们最后 把obj指向null 而导致闭包第一时间被垃圾回收. 而不会因为外部的引用而 延长其生存期.
但这个代码 在safari4中 无效 如此做返回的将是 null..
浙公网安备 33010602011771号