浏览器对象模型
1. window对象
window对象是顶级对象(或全局对象)
定义的全局变量或全局函数都会成为window对象的属性和方法,都可以用window对象来调用,在使用时可以忽略window。
1 <script> 2 var a = 123; 3 var fn = function() {alert('执行fn')}; 4 console.log(window.a); //123 5 console.log(window.fn); //fn 6 </script>
特殊情况1:不要定义全局变量name。因为赋值数组时,数组会自动转换为字符串。
1 <script> 2 var name = ['章三','李四','王五']; 3 console.log(name[0]); //输出'张' 4 </script>
特殊情况2:不要定义全局变量top。因为top是只读的,只能使用,不能重新设置。
已经被window使用,并且它代表window本身
1 <script> 2 var top = 1; 3 console.log(top); //输出window对象 4 </script>
2. 对话框
window可以省略
1)alert:window.alert();
2)prompt:window.prompt();
3)confirm:window.confirm();
3. 定时器
1)window.setTimeout(callback, time);
window可以省略。time单位为毫秒。
作用:延迟执行一段程序,只执行一次(定时炸弹),返回一个数字。
1 <script> 2 setTimeout(function(){ 3 console.log('bumb!'); 4 }, 3000); 5 </script>
定时器的事件不是百分之百精确的,因为要考虑到代码执行顺序问题:当定时器代码和非定时器代码同时存在时,先执行非定时器代码。非定时器代码执行结束后才会执行定时器,此时与定时器设置的延迟时间无关。
1 <script> 2 setTimeout(function(){ 3 console.log('bumb!'); 4 }, 3000); 5 while(true) { 6 } 7 </script>
延迟时间为0也不例外。
1 <script> 2 setTimeout(function(){ 3 console.log('bumb!'); 4 }, 0); 5 console.log('a'); //先输出a,再输出bumb! 6 </script>
定时器返回的是一个数字,定时器的标识。
1 <script> 2 var flag = setTimeout(function(){ 3 alert('bumb1!'); 4 }, 5000); //1。表示第几个定时器。 5 var flag2 = setTimeout(function(){ 6 alert('bumb2!'); 7 }, 5000); //2 8 console.log(flag); 9 console.log(flag2); 10 </script>
2)清除定时器 setTimeout
1 <body> 2 <button>清除定时器</button> 3 <script> 4 var flag = setTimeout(function(){ 5 alert('bumb1!'); 6 }, 5000); 7 var btn = document.querySelector('button'); 8 btn.onclick = function() { 9 clearTimeout(flag); 10 } 11 </script> 12 </body>
3)window.setInterval(callback, time); (常用)
可以重复执行,不清除定时器就会一直执行下去。
细节问题与setTimeout定时器一样。
1 <script> 2 setInterval(function(){ 3 console.log(Math.random()); 4 },1000); 5 </script>
4)清除定时器 setInterval
1 <body> 2 <button>stop</button> 3 <script> 4 //调用setInterval时,就会产生一个定时器,并且返回数字标示定时器。 5 var flag = setInterval(function(){ 6 console.log(Math.random()); 7 },1000); 8 var btn = document.querySelector('button'); 9 btn.onclick = function() { 10 clearInterval(flag); //清除定时器 11 } 12 </script> 13 </body>
4. location 操作浏览器地址栏
属性:location.href; 设置或获取地址栏地址
方法:location.reload(); 刷新页面
5.history 操作历史记录
- 属性:
history.length; 获取历史记录的长度
- 方法:
history.back(); 回退上一个历史记录
history.forward(); 前进下一个历史记录
history.go(数字); 正数,表示前进; 负数,表示回退;
6.navigator 获取浏览器信息
属性:navigator.userAgent; 用来获取浏览器的信息