浏览器对象模型BOM之window

     BOM提供了很多对象,用于访问浏览器的功能,这些功能与任何网页内容无关。而BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色,它既是通过JS访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。这意味着在网页中定义的任何一个对象、变量和函数,都以window作为其Global对象。

一、window对象

1.1 全局作用域

   由于window对象同时扮演着ECMAScript中Global对象的角色,因此在所有的全局作用域中声明的变量、函数都会变成window对象的属性和方法。值得注意的是,全局变量不能通过delete操作符删除,而直接在window对象上定义的属性可以。
【示例】
<script type="text/javascript">
        var age = 23;
        function sayAge() {
            return 23;
        }
        window.sex = '男';
        alert(window.age);
        alert(window.sayAge());
        alert(window.sex);
        delete window.age;
        alert(window.age);
    </script>

1.2 窗口关系及框架

        如果页面中包含框架,则每个框架都拥有自己的window对象,并且保存在frames集合中。在frames集合中,可以通过数值索引(从0开始,从左至右,从上上下)或者框架名称来访问相应的window对象。每个window对象都有一个name属性,其中包含框架的名称。

1.3 窗口位置

1.4 窗口大小

1.5 导航和打开窗口
方法:window.open()
参数:要加载的URL、窗口目标、一个特性字符串、一个表示新页面是否取代浏览器历史记录中当前加载页面的布尔值
注意:通常只需传递第一个参数,最后一个参数只在不打开新窗口的情况下使用;
          如果该方法传递了第二个参数,而且该参数是已有窗口或框架的名称,那么就会在具有该名称的窗口或框架中加载第一个  
          参数指定的URL;
返回值:该方法返回一个指向新窗口的引用。引用的对象与其他window对象大致相似。

1.6 弹出窗口屏蔽程序

      大多数浏览器都内置有弹出窗口屏蔽程序,结果就是用户可以将绝大多数不想看到弹出窗口屏蔽掉。于是,在弹出窗口被屏蔽时,就有两种情况要考虑:
      第一种,如果是浏览器内置的屏蔽程序阻止的弹出窗口,那么window.open()方法很可能就会返回null。此时,只要检测这个返回的值就可以确定弹出窗口是否被屏蔽。
     第二种,如果是浏览器扩展或其他程序阻止的弹出窗口,那么对window.open()通常或抛出一个错误。因此,要想准确地检测出弹出窗口是否被屏蔽,必须在检测返回值的同时,将对window.open()的调用封装在一个try-catch块中。
【示例第一种】
<script type="text/javascript">
        var win = window.open('http://www.baidu.com');
        if (win == null) {
            alert('弹出窗口被屏蔽掉了!');
        }
    </script>
【示例第二种】
<script type="text/javascript">
        var blocked = false;
        try{
            var win=window.open('http://www.baidu.com');
            if(win==null){
                blocked=true;
            }
        } catch (ex) {
            blocked = true;
        }
        if (blocked) {
            alert('弹出窗口被屏蔽掉了!');
        }
    </script>
1.6 关闭窗口
方法:window.close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值