欢迎来到HELLO素材网! 南京网站制作选择顺炫科技
丰富的DIV CSS模版、JS,jQuery特效免费提供下载
当前位置:主页 > 建站教程 > JS教程 >

window.open和window.location.href

发表于2014-05-09 23:54| 次阅读| 来源管理员| 作者管理员

摘要:open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口。 window.open(URL,name,features,replace) 参数解释: URL:一个可选的字符串,声明了要在新窗口中显示的文档的 URL。如果省略了

open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口。

window.open(URL,name,features,replace)

参数解释:

URL:一个可选的字符串,声明了要在新窗口中显示的文档的 URL。如果省略了这个参数,或者它的值是空字符串,那么新窗口就不会显示任何文档。

如:$('input').click(function(){

window.open('','','width:200,height:200');

});

效果则是:

但是如果把参数URL替换成空格,新页面会继承父窗口的内容。

$('input').click(function(){

window.open(' ','','width:200,height:200');

});

可以一次弹出多个窗口:

$('input').click(function(){

window.open('www.csshello.com','新窗口1');

  window.open('www.baidu.com','新窗口2');

});

注意:窗口的名字不能相同,但可以都为空;


name:一个可选的字符串,该字符串是一个由逗号分隔的特征列表,其中包括数字、字母和下划线,该字符声明了新窗口的名称。这个名称可以用作标记 <a> 和 <form> 的属性 target 的值。如果该参数指定了一个已经存在的窗口,那么 open() 方法就不再创建一个新窗口,而只是返回对指定窗口的引用。在这种情况下,features 将被忽略。

PS:如果name使用名字已经存在,那么不会创建一个新的窗口,而是会返回对已经存在的窗口的引用。否则,则创建一个新的窗口。

name弹出窗口的名称,可以任意指定,也可以用’’来代替,其值可以为:

_blank 表示新开一个窗口,

_parent表示父框架窗口,

_self表示覆盖该窗口,

xxx表示覆盖名字为xxx的窗口(每个窗口都可以给他命名)


Features:一个可选的字符串,声明了新窗口要显示的标准浏览器的特征。如果省略该参数,新窗口将具有所有标准特征。

窗口特征(Window Features)

channelmode=yes|no|1|0 是否使用剧院模式显示窗口。默认为 no。

directories=yes|no|1|0 是否添加目录按钮。默认为 yes。

fullscreen=yes|no|1|0 是否使用全屏模式显示浏览器。默认是 no。处于全屏模式的窗口必须同时处于剧院模式。

height=pixels 窗口文档显示区的高度。以像素计。

left=pixels 窗口的 x 坐标。以像素计。

location=yes|no|1|0 是否显示地址字段。默认是 yes。

menubar=yes|no|1|0 是否显示菜单栏。默认是 yes。

resizable=yes|no|1|0 窗口是否可调节尺寸。默认是 yes。

scrollbars=yes|no|1|0 是否显示滚动条。默认是 yes。

status=yes|no|1|0 是否添加状态栏。默认是 yes。

titlebar=yes|no|1|0 是否显示标题栏。默认是 yes。

toolbar=yes|no|1|0 是否显示浏览器的工具栏。默认是 yes。

top=pixels 窗口的 y 坐标。

width=pixels 窗口的文档显示区的宽度。以像素计。


Replace:一个可选的布尔值。规定了装载到窗口的 URL 是在窗口的浏览历史中创建一个新条目,还是替换浏览历史中的当前条目。支持下面的值:

true - URL 替换浏览历史中的当前条目。

false - URL 在浏览历史中创建新的条目。

重要事项:请不要混淆方法 Window.open() 与方法 Document.open(),这两者的功能完全不同。为了使您的代码清楚明白,请使用 Window.open(),而不要使用 open()。


window.local.href 在本页跳转不能打开新窗口

运行下面代码可以看出window.open和window.local.href的区别

<input type="button" value="新窗口打开" onclick="window.open('http://www.csshello.com')">

<input type="button" value="当前页打开" onclick="window.location='http://www.csshello.com/'">


Self.location.href

self 即当前页面,等同于window或this ; 所以 self.location 就是当前页面的url

如果一个页面A.HTML 里面嵌套了一个B.HTML,在A中使用 window.location跳转就把整个页面跳转了;而在 A中镶嵌B页面的位置使用了self跳转就只是把B界面跳转了A页面其他地方没有变化!

self.location.href指当前窗口的URL地址,去掉self默认为当前窗口的URL地址.

一般用于防止外部引用,如果你的网页地址是: http://www.a.com 别人的是http://www.b.com, 他在他的页面用iframe等框架引用你的http://www.a.com,那么你可以用:

if(top.location.href!=self.location.href){

  location.href="http://www.a.com";

}

来转向你的页面,

top指代的是主体窗口,这里top.location.href返回http://www.b.com;

http://www.b.com!=http://www.a.com,返回为真(true),则网页重定向到你的网页,做到防盗用的作用.

其中top.location.href!=self.location.href是什么意思呢?解释如下:

self.location 指的是当前页面的location

top.location 是指当前页面所属的父页面的location

判断当前页面和祖父页面的地址是不是一样的,如果是一样的,则祖父页面即当前页面,如果不一样,可能是当然页面处于弹出窗口或框架内

这个在很多场合可以用,可以用在防止自己的网页被别人IFRAME过去,即被别的框架引用过去。


总结:

window.open不一定是打开一个新窗口!  

只要有窗口的名称和window.open中第二个参数中的一样就会将这个窗口替换,用这个特性的话可以在iframe和frame中来代替location.href。


window.location或window.open如何指定target?

这是一个经常遇到的问题,特别是在用frame框架的时候

解决办法: window.location 改为 top.location 即可在顶部链接到指定页 或 window.open("你的网址","_top");


下面我们再对弹出的窗口进行一些控制,效果就更好了。如果我们再将一小段代码加入弹出的页面(注意是加入page.html的HTML中,可不是主页面中,否则整个页面都被关闭了),让它固定时间后自动关闭。

首先,将如下代码加入page.html文件的<head>区:

  <script language="JavaScript">

  function closepage()

  {

  setTimeout("self.close()",50000)

  }

  </script>

然后,再用<body onload="closepage()"> 这一句话代替page.html中原有的<BODY>这一句就可以了。(这一句话千万不要忘记写啊!这一句的作用是调用关闭窗 口的代码,5秒钟后就自行关闭该窗口。)


如有问题,欢迎留言探讨!