- 全局变量不能通过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);
超时调用可以模拟定时调用,平常也很少使用定时调用,因为后一个定时调用可能会在前一个定时调用之前启动,最好不用定时调用,改用超时调用。