IE BUG系列:由haslayout导致的问题.

IE中由haslayout导致的CSS问题非常的多。
其中我遇到的有:
border在滚动条滚动后断线
CSSfilter属性失效
甚至还有div被强设高度 任何CSS JS操作都将重置高度的情况出现…
还有其他的等等问题…有点变态的样式问题大部分都与其有关。

那么要解决这类问题,希望大家清楚的了解一下haslayout.再做出相应的解决.
阅读全文

IE BUG系列:网页加载被强行中断

今天同事遇到个怪问题.链接在点击的时候弹出一个模拟窗口.里面是一个iframe.
但是测试的时候发现iframe加载的网页加载一半以后请求被强行中断.

造成网页空白或只打开一半.

最终定位问题:

IE6在链接设置为href=”javascript:void(0);”的时候,
onclick执行的函数中如果有关于URL跳转的行为都会被强行中断.
因为document.location.href和当前a节点的href冲突了.
一般的解决方法就是:

1
<a href="#" onclick="fn();return false;" >click</a>

或者

1
<a href="javascript:void fn();" >click</a>

另外在onclick执行的函数中如果有document.createElement创建iframe节点的时候
先插入到dom结构中 再设置src,
否则设置src后会马上进行请求.然后在插入dom结构中的时候重新渲染,结果请求被中断.

做以记录.HOHO~

Nginx + PHP + MySQL + phpMyAdmin + eAcelerator 一键安装

最近Nginx比较流行, 另外以前学过一些PHP,想温习一下.
所以下载了一个一键安装版本的服务器套件试了一下.

Windows:
APMServ5.2.6
这个软件超级傻瓜化并且集成了很多软件 可以选择性的安装启动以及配置.
在windows上做调试工作很方便.

Linux:
LNMP
这套套件使用的是目前的稳定版本.
可以作为服务器软件套装 .
我在公司的开发机上装了一下 不错哦~
不过我将Nginx改为0.7.65了.

利用闭包使函数拥有静态变量

今天看了月大一篇博文.

建立带有静态变量的函数范式:

1
2
3
4
5
6
var myFunc = (function(){
    var localVariable = "someValue";
    return function(args...){
        //function body
    }
})();

确实,这样在建立函数体之前将闭包执行依次 将需要静态化的变量造成内存泄露.
那么在返回的函数中如果不创建同名变量的话确实可以达到目的.

不过这样写的话函数将无法被预处理.要使用这个函数只能在这段代码下面…
孰优孰劣实在不好说.看情况应用吧.

JS中如何更简单的判断this的作用域.

今天前端群里聊起了一个比较感兴趣的问题.

1
2
var $=document.getElementById;
$('elementID').innerHTML='...';

在FF中 这段代码为什么不能运行呢?

最后 ‘phzzy’ 同学给出了答案:’是this的问题.’

那么如何判断 当前函数执行的时候this是指的谁呢?
我写了个简单的例子给大家解释一下.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
window.v=0
var class1=function(){
     this.v=10;
}
class1.prototype.test=function(){
     alert(this.v);
}
/*
obj.test()在执行的时候test函数的this归属于前置对象obj
obj是class1的实例 在初始化的时候执行了this.v=10;
所以结果是10
*/
var obj=new class1();
obj.test();
/*
这里,test2直接指向了obj.test这个函数.在运行的时候没有任何前置对象.
那么可以看成 window.test2(); 则结果是window.v 就是0
*/
var test2=obj.test;
test2();
/*
这里调用了class.prototype.test();
test的前置对象是prototype
但是prototype并没有v属性 所以结果是...undefined
*/
class1.prototype.test();

通过上面的例子大家应该明白 在执行带有this的函数时.根据写法回指引向不同的对象.所以documen.getElementById被更名以后不能运行.因为他内部有和document相关的this操作.(只有FF有这个问题,IE的document.getElementById本身就是一个对象,并非function所以不存在这个问题).

那么我们需要$能够正常的运行怎么办呢?
你可以写document.$=document.getElementById;然后用document.$去运行
或者:$.apply(document,elementID)