首先,我们来做个实验吧。
打开任何一个浏览器的空页,在地址输入栏中输入以下代码:
javascript:void(3);
会发生什么呢?
答案是什么都不会发生。
然后,我们再打开一个浏览器的空页面,在地址栏中输入以下代码:
javascript:function test(){return "hello";};test();
这样又会发生什么呢,是什么都不会发生么?
显然不是,我们得到的是一个新的页面,而且页面的内容是JS代码返回的值(也就是 hello );
为什么会这样?
因为在浏览器解析JS的时候,如果有返回值,那么就会生成一个新的页面,如果没有就什么都不做。
这就是为什么上面的两个例子有这种差别。
好了,那入正题。
先来看下两段很相似的代码
然后,我们把这两断代码放到同一个页面中,依次点击他们。
貌似没有发生什么,是不是这样就可以说他们是等效的了呢?
那么我们再来看一段代码
这样我们再分别点击两个链接看看,效果不一样了吧。
href 为#的跳到了自己的页面。
原来‘#'代表的是 #top ,
top 属性返回最顶层的先辈窗口。
该属性返回队一个顶级窗口的只读引用。如果窗口本身就是一个顶级窗口,top 属性存放对窗口自身的引用。如果窗口是一个框架,那么 top 属性引用包含框架的顶层窗口。
而void 函数则返回的是空,也就是让浏览器不做任何事情。
打开任何一个浏览器的空页,在地址输入栏中输入以下代码:
代码如下:
javascript:void(3);
会发生什么呢?
答案是什么都不会发生。
然后,我们再打开一个浏览器的空页面,在地址栏中输入以下代码:
代码如下:
javascript:function test(){return "hello";};test();
这样又会发生什么呢,是什么都不会发生么?
显然不是,我们得到的是一个新的页面,而且页面的内容是JS代码返回的值(也就是 hello );
为什么会这样?
因为在浏览器解析JS的时候,如果有返回值,那么就会生成一个新的页面,如果没有就什么都不做。
这就是为什么上面的两个例子有这种差别。
好了,那入正题。
先来看下两段很相似的代码
代码如下:
代码如下:
然后,我们把这两断代码放到同一个页面中,依次点击他们。
貌似没有发生什么,是不是这样就可以说他们是等效的了呢?
那么我们再来看一段代码
代码如下:
这样我们再分别点击两个链接看看,效果不一样了吧。
href 为#的跳到了自己的页面。
原来‘#'代表的是 #top ,
top 属性返回最顶层的先辈窗口。
该属性返回队一个顶级窗口的只读引用。如果窗口本身就是一个顶级窗口,top 属性存放对窗口自身的引用。如果窗口是一个框架,那么 top 属性引用包含框架的顶层窗口。
而void 函数则返回的是空,也就是让浏览器不做任何事情。