JavaScript的DOM、window之导航和打开窗口(五)

导航和打开窗口

使用window.open()方法既可以导航到一个特定的URL,也可以打开一个新的浏览器窗口。
window.open()可以接收四个参数:

1、要加载的URL、
2、窗口目标、
3、一个特性字符串
4、一个表示新页面是否取代浏览器历史记录中当前加载页面的布尔值。
通常只须传递第一个参数最后一个参数只在不打开新窗口的情况下使用。

如果为window.open()传递第二个参数,而且该参数是已有窗口或框架的名称,那么就会在具有该名称的窗口或框架中加载第一个参数指定的URL。

//等价于:<a href="https://www.baidu.com" target="topFrame"></a>
window.open("https://www.baidu.com/","topFrame");

第二个参数也可以是下列任何一个特殊的窗口名称:_self、_parent、_top或_blank。
1、弹出窗口
如果给window.open()传递的第二个参数并不是一个已经存在的框架或窗口,那么该方法就会根据在第三个参数位置传入的字符串创建一个新窗口或标签页。如果没有传入第三个参数,那么就会打开一个带有全部默认设置(工具栏、地址栏和状态栏等)的新浏览器窗口(或者打开一个新标签页一一>根据浏览器设置。)。在打不开新窗口的情况下,会忽略第三个参数。
第三个参数是一个逗号分隔的设置字符串,表示在新窗口中显示哪些特性。下表列出了可以实现在这个字符串中设置的选项。fullscreen yes/no 表示浏览器窗口是否最大化。仅限IE。
在这里插入图片描述
表中所列部分或全部设置选项,都可以通过逗号 分割的名值对来指定。其中,名值对以等号表示(注意整个特性字符串中不允许出现空格)。


var baidu=window.open("https://www.baidu.com","baidu","witdh=400,height=400,top=10,left=10,resizable=yes");

上面这行代码会打开一个400*400,并且距离屏幕上方和左方都是10像素。
window.open()会返回一个指向新窗口的引用。

//通过window.open()打开的一个窗口,我们可以对这个窗口调整大小、移动位置,甚至关闭。
//调整大小
baidu.resieTo(500,500);
//移动位置
baidu.moveTo(100,100);
//调用close()方法还可以关闭新打开的窗口
baidu.close();

注意:这个方法仅适用于是通过window.open()打开的窗口
对于浏览器窗口,如果没有得到用户的允许是不能关闭它的。不过,弹出窗口倒是可以调用top.close()在不经用户允许的情况下关掉自己弹出窗口关闭之后,窗口的引用仍在,但是除了检测closed之外,就没有其他用处了

baidu.close();
alert(baidu.closed);//true

**新创建的window对象有一个opener属性,其中保存着打开它的原始对象。**这个属性只在弹出窗口中的最外层window对象(top)中定义,而且指向调用window.open()的窗口或者框架。

alert(baidu.opener == window);//true

虽然弹出窗口有一个指针指向打开它的原始窗口,但是原始窗口没有这样的指针指向弹出窗口。窗口并不跟踪记录它们打开的弹出窗口,必要时需要手动实现跟踪。

有些浏览器(IE8及Chrome)会独立的进程中运行每个标签页。当一个标签打开另一个标签页时,如果两个window对象之间需要彼此通信,那么新标签页就不能运行在独立的进程中。
在Chrome中,将创建的标签页的opener属性设置为null。就是告诉浏览器新创建的标签页不需要与打开它的标签页通信,因此可以在独立的进程中运行。标签页之间的联系一旦切断,将没有办法恢复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值