js window对象

BOM的中坚指标是window,它表示浏览器的贰个实例。

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

                                   (2)ECMAScript规定的Global对象

① 、全局功用域

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

实际上远非全局变量和全局函数;全数在大局效用域中定义的习性和函数,都以Global对象的性格。别的,全体原生引用类型的构造函数(像Object、Function),也都以Global的质量。全体引用类型默许都一连了Object。

web浏览器都以将这一个全局对象(Global)作为window对象的一有个别加以落实的,因而,在全局效用域中宣示的变量和函数就都会成了window对象的属性和办法。

2、窗口关系及框架

假若页面中包罗框架,则每种框架都有和好的window对象,保存在frames集合(数值索引从0伊始,从左到右,从上到下)中。每个Window对象都有1个name属性,在这之中包涵框架的称谓。

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

对于一个在框架中编辑的其余代码来说,window对象指向的皆以万分框架的特定实例,而非最高层的框架。

parent对象始终本着当前框架的直白上层框架。

叁 、窗口大小

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

     window.outerWidth和window.outerHeight:浏览器窗口本人的尺码。

Chrome:上边多少个值相同,都是视口(viewport)大小。

对于运动装备,window.innerWidth和window.innerHeight保存着可见视口,也便是显示屏上可知页面区域的大大小小。移动IE浏览器不扶助那个属性,但能够通过document.documentElement.clientWidth和document.documentElement.clientHeight。

肆 、导航和开拓窗口

window.open(“要加载的url”,”窗口指标”,”三个特征字符串”,”三个意味新页面是或不是代表浏览器历史记录中当前加载页面包车型客车布尔值”),重返一个针对性新窗口的引用。

其次个参数能够是_blank、_parent、_top、_self
大概已有的窗口或框架的名号,固然没有是该名称的窗口或框架,就会创立1个新窗口并取名为该名称。

其四个参数:字符串用逗号分隔

图片 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');                        
    }

⑤ 、间歇调用和过期调用

JavaScript是单线程语言。

过期调用:window对象的setTimeout()方法。第1个参数能够是字符串也能够是函数,然而不提出传字符串,因为只怕引致品质损失。第一个象征等待多久的飞秒数。

//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();