ECMAScriptjs window对象

BOM的中心目标是window,它象征浏览器的一个实例。

每当浏览器被,window对象是(1)通过JavaScript访问浏览器窗口的一个接口

                                   (2)ECMAScript规定的Global对象

1、全局作用域

ECMA-266概念了目标:内置对象(例如Object、Array、String、Function)及单体内置对象(Global(全局)对象和Math)

实在远非全局变量和大局函数;所有以大局作用域中定义之性与函数,都是Global对象的特性。此外,所有原生引用类型的构造函数(像Object、Function),也都是Global的属性。所有援类型默认都持续了Object。

web浏览器还是用这个全局对象(Global)作为window对象的同一片段加以落实之,因此,在全局作用域中宣称的变量和函数就还见面成为了window对象的习性与办法。

2、窗口关系及框架

若果页面中蕴藏框架,则每个框架还生投机之window对象,保存于frames集合(数值索引从0开始,从左到右,从上到下)中。每个Window对象还发出一个name属性,其中含框架的称谓。

top对象始终对最高(最外)层的框架,也就是浏览器窗口。

于一个每当框架中修的其它代码来说,window对象对的且是格外框架的特定实例,而未最高层的框架。

parent对象始终对准当前框架的第一手上层框架。

3、窗口大小

Firefox:window.innerWidth和window.innerHeight:页面视图区大小;

     window.outerWidth和window.outerHeight:浏览器窗口本身的尺寸。

Chrome:上面四独价值相同,都是视口(viewport)大小。

对运动装备,window.innerWidth和window.innerHeight保存着可见视口,也就是屏幕上可见页面区域之分寸。移动IE浏览器不支持这些性,但足由此document.documentElement.clientWidth和document.documentElement.clientHeight。

4、导航及开拓窗口

window.open(“要加载的url”,”窗口目标”,”一个表征字符串”,”一个象征初页面是否代替浏览器历史记录中即加载页面的布尔值”),返回一个对新窗口的援。

亚独参数可以是_blank、_parent、_top、_self
或者曾部分窗口或者框架的号,如果没是该名的窗口或框架,就会见创一个初窗口并取名为该名。

其三单参数:字符串用逗号分隔

ECMAScript 1

反省弹有窗口是否受屏蔽:

    var blocked = false;
    try{
        var w = window.open('http://www.baidu.com','framename','height=400,width=400,top=10,left=10');
        if(w == null){
            blocked = true;
        }
    } catch(ex){
        blocked = true;
    }
    if(blocked){
        alert('the popup was locked');                        
    }

5、间歇调用和过期调用

JavaScript是单线程语言。

过期调用:window对象的setTimeout()方法。第一独参数可以是字符串也可以是函数,但是未建议传字符串,因为可能引致性损失。第二个代表等多长时间的毫秒数。

//1s后弹出警告,timeoutId是计划执行代码的唯一标识
var timeoutId = setTimeout(function(){
    alert('Hello world');
}, 1000);
//取消超时调用
clearTimeout(timeoutId);

暂停调用:setInterval(),按指定时间距离重复执行代码。

var intervalId =  setInterval(function(){
    alert("hello world");
},2000);
//取消间歇调用
clearInterval(intervalId);

因而过调用实现间歇调用:

var num = 0;
var max = 10;

function increaseNum(){
    num++;

    if(num < max){
        setTimeout(increaseNum,500);
    }else{
        alert('Done');
    }
}
setTimeout(increaseNum,500);

6、系统对话框

alert()、confirm()、prompt()

var num =0;
function f(){
    var result = prompt('what is your name');
    if(result !== null){
        if(confirm('name is '+result+'?')){
            alert('Yes');
        }else{
            f();
        }

    }
}
f();