今天花费了3个小时,解决一个bug,结果在使用IETESTER的时候,出现了一个奇怪的现象:
连最基本的alert都无法显示,非常纠结,老以为是我的写法出现了问题,在IE7,IE8下面不兼容,
Insert title here
用户在IE6,IE9里面点击test,都可以弹出onclick框,但是在IE7,IE8里面,就出现问题了,我修改查看了很多资料,老以为是我的写法有问题,原先,我是写的
我为什么会发现这个问题呢,是这样的,原先不是这样写的:
请教你一个问题
Insert title here
test
Insert title here
onclick
部分转帖如下:(http://hi.baidu.com/snailzzz/blog/item/342ecf52a7751f020df3e359.html)
世界永远没那么简单,在当今JavaScript如日中天的Web世界里,链接a经常用来触发js事件:
test 1
>test 2
>test 3
test 4
首先,第一种写法在ie下是有问题的,原因是 ie下会自动补全href.
第二种写法直接在onclick事件中阻止掉默认事件,因此href="#"
中的#实际上可以为任意值。用#,是考虑没有js时,点击后停留在本页(注意:当a在一屏以下时,这种写法会导致页面回滚到顶部)。
第三种写法,href值是一个javascript伪协议,void是javascript的一个一元操作符(比如!, typeof)。void操作符的作用是,只执行后面的表达式,不返回任何值。看起来好像是void(0)
阻止了默认事件,实际上,下面这些写法都没问题:
>test 3
>test 3
>test 3
>test 3
因为a的默认操作就是javascript伪协议的内容,里面加不加void都不会触发其它事件。(注意:Opera下,当伪协议里有返回值时,会改变href, 因此我们一般写void(0)或空语句)
理解了第三种写法,第四种写法也就明白了:href="javascript: void something()"
. 这种写法有一个“好处”是,鼠标悬浮时,用户可以通过状态栏看到将要执行的函数。对开发者来说,这或许是个好处,但对普通用户来说,这真的会增加信赖感吗?抑或是恐惧感?没有数据,无法下结论。
除了上面的写法,还有一种推荐的写法是,通过class或id给a增加一个hook,然后在js里通过hook来添加事件。
下面转帖如下:http://www.cnblogs.com/tianguook/archive/2010/06/24/1764235.html
Frame、iFrame、NoFrame的区别和使用
无语了,不好测试IE7的问题了。看来要使用虚拟机了。