javascript之window对象

  1. 全局变量不能通过delete操作符删除,而直接在window对象上定义的变量可以通过delete删除。
var age = 20;
window.name = 'Jack';
//IE<9时抛出错误,在其他浏览器中都返回false
delete window.age;
//IE<9时抛出错误,在其他浏览器中都返回true
delete window.name; //return true
alert(window.age); //20
alert(window.name); //undefined

2.获取页面视口大小,考虑到标准模式和混杂模式的不同,代码如下:

var pageWidth = window.innerWidth,
    pageHeight = window.innerHeight;
//判断pageWidth是否是一个数值
if(typeof pageWidth != 'number') {
    //判断是否是标准模式
    if(document.compatMode == 'CSS1Compat') {
        //标准模式下使用这个
        pageWidth = document.documentElement.clientWidth;
        pageHeight = document.documentElement.clientHeight; 
    } else {
        //混杂模式下使用这个
        pageWidth = document.body.clientWidth;
        pageHeight = document.body.clientHeight; 
    }
}

3.window.open()打开一个新窗口,接受4个参数,只接受第一个参数就是打开特定的URL,第二个参数就是窗口目标相当于:window.open('http://www.baidu.com/', 'baidu')----等价于<a href="http://www/.baidu.com" target="baidu"></a>, 第三个参数传入窗口要显示哪些特性比如:大小高度等等。
window.open()方法会返回一个指向新窗口的引用。可以用来检测弹出的窗口是否被屏蔽,有时候流浪器扩展或其他程序阻止弹出窗口,window.open()可能会抛出错误,所以代码如下:

var blocked = false;
try{
    var shieldWin = window.open('http://www.baidu.com', '_blank');
    if(shieldWin == null) {
        blocked = true;
    }
} catch(ex) {
    blocked = true;
}
if(blocked) {
    alert('The window was blocked');
}

4.超时调用需要使用window.setTimeout()方法,定时调用使用window.setInterval()方法,看下面的例子:

setTimeout(function() {
    alert('Hello.');
}, 1000);

不建议第一个参数使用字符串,因为传递字符串可能导致性能损失。定时调用也一样。看定时调用的一个例子:

var num = 0,
    max = 10,
    intervalId = null;
function count() {
    num++;
    if(num == max) {
        clearInterval(intervalId); //该方法用于取消定时调用,只需传入定时调用方法返回的ID
        alert('Done');
    }
}
intervalId = setInterval(count, 1000);

每一秒调用一次,到达最大值取消。也可以用超时调用实现:

var num = 0,
    max = 10,
    intervalId = null;
function count() {
    num++;
    if(num < max) {
        setTimeout(count, 1000);
    } else {
        alert('Done');
    }
}
setTimeout(count, 1000);

超时调用可以模拟定时调用,平常也很少使用定时调用,因为后一个定时调用可能会在前一个定时调用之前启动,最好不用定时调用,改用超时调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值