+发表新主题
查看: 1570|回复: 0

[代码片段] BOM 对象操作浏览器窗口的API

[复制链接]

[代码片段] BOM 对象操作浏览器窗口的API

[复制链接]
殷三姗 发表于 2016-1-21 20:22:32 浏览:  1570 回复:  0 [显示全部楼层] |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
今天学习BOM对象

1. BOM: 操作浏览器窗口的API

    window对象:

        1. 替代ECMAScript中的Global对象,充当全局对象

        2. 封装浏览器软件或窗口的属性和功能——》BOM


    1. 打开新链接的方式:4种:

         1. 在当前窗口打开,可后退

                     html<a href="url">xxx</a>

                 jswindow.open("url","窗口名","窗口配置");

                           open("url","_self");

         2. 在当前窗口打开,不可后退

                    jslocation.replace("url");

                    替换history中当前url,不新增history记录。

         3. 在新窗口打开,可打开多个

                html<a href="url" target="_blank">xxx</a>

                jsopen("url","_blank");

                 默认为_blank

         4. 在新窗口打开,只能打开一个

                html<a href="url" target="自定义窗口名">xxx</a>

                                        window.name

                浏览器规定:内存中同名窗口对象只能出现一次

                             后出现的同名窗口会覆盖前一个

               jsopen("url","自定义窗口名")

例如:

  1. <!DOCTYPE html>

  2. <html>

  3. <head>

  4. <meta charset="utf-8"/>

  5. <title>打开新链接方式总结</title>

  6. <script>

  7. //打开新链接方式总结:

  8.       //1. 在当前窗口打开,可后退

  9.         function fun1(){

  10. open("http://weixin.com","_self");

  11.        }      

  12.       //2. 在当前窗口打开,不可后退

  13.    function fun2(){

  14. location.replace("http://weixin.com");

  15.        }

  16.       //3. 在新窗口打开,可重复打开

  17.       function fun3(){

  18. open("http://weixin.com","_blank");

  19.        }

  20.       //4. 在新窗口打开,不可重复打开

  21. function fun4(){

  22. open("http://weixin.com","uname");

  23.        }

  24. </script>

  25. </head>

  26. <body>

  27.     <a href="javascript:fun1()">click me 可后退</a><br/><br/>

  28. <a href="javascript:fun2()">click me 不可后退</a><br/><br/>

  29. <a href="javascript:fun3()">click me 可重复打开多个</a><br/><br/>

  30. <a href="javascript:fun4()">click me 不可重复打开</a>

  31. </body>

  32. </html>

复制代码
2. 窗口大小和窗口位置:

       1. 窗口大小:不带单位

             window.outerWidth/outerHeight 窗口的宽和高

             window.innerWidth/innerHeight 文档显示区的宽高

                  修改窗口大小:2个方法:

              window.resizeTo(width,height);

              window.resizeBy(width的增量,height的增量);

       2. 窗口位置:

                  移动窗口的位置:2个方法:

                window.moveTo(left , top)

                 window.moveBy(left的增量,top的增量)

       3. 打开窗口时,设定新窗口的大小和位置

                  窗口左上角距显示器左上角的位置topleft

                窗口宽度和高度widthheight

               var config="top=?,left=?,width=?,height=?,resizable=yes,location=no";

               open("url","name",config)

   

        4. screen.height/width: 完整桌面分辨率的高和宽

          screen.availHeight/availWidth: 完整桌面分辨率去掉任务栏后的宽和高。

          win7下任务栏透明,导致availHeightheight同化。

  

   

例如:   

  1. <!DOCTYPE html>

  2. <html>

  3. <head>

  4.   <title>小游戏:点不到的小窗口</title>

  5.   <meta charset="utf-8"/>

  6.   <script src="js/2.js"></script>

  7. </head>

  8. <body>

  9.   <button onclick="game.start()">开始游戏</button>

  10. </body>

  11. </html>

  12. 下面的js文件:

  13.   var game={

  14. width:50, //窗口宽

  15. height:50, //窗口高

  16. maxTop:0, //top属性可取的最大值,屏幕高-任务栏高-height

  17. maxLeft:0, //left属性可取的最大值,屏幕宽-width

  18. taskH:30, //任务栏的高度

  19. pop:null, //保存弹出的小窗口对象



  20. start:function(){//游戏启动

  21. var self=this; //留住this--game,

  22. //计算maxTop:屏幕的height-taskH-height

  23. self.maxTop=screen.height-self.taskH-self.height;

  24. //计算maxLeft:屏幕的width-width

  25. self.maxLeft=screen.width-self.width;

  26. //在0~maxTop之间取随机top值,保存在变量top中

  27. var top=Math.floor(Math.random()*(self.maxTop+1));

  28. //在0~maxLeft之间取随机left值,保存在变量left中

  29.    var left=Math.floor(Math.random()*(self.maxLeft+1));

  30. //拼接config字符串,top值为top,left值为left,width值为width,height值为height,启用调整大小,禁用地址栏

  31. var config="top="+top+",left="+left

  32.   +",width="+self.width

  33.       +",height="+self.height

  34.       +",resizable=yes,location=no";

  35. //打开一个新窗口,同时设置窗口的url为"about:blank",name为"pop",config为字符串config,最后将新窗口对象存入pop属性中

  36. self.pop=open("about:blank","pop",config);

  37. //向新的body中写入:

  38. //<img src="d:/xiaoxin.gif" onclick="alert('约么?')"/>

  39. self.pop.document.write('<img src="d:/xiaoxin.gif" width="80px" onclick="alert('姐姐,你要吃青椒吗?')"/>');

  40. self.pop.onmouseover=function(){//this-->pop

  41. //获得事件对象:

  42. //        事件发生时自动创建,封装事件和鼠标信息的对象

  43. var e=window.event||arguments[0];

  44. //获取事件对象中的相对于屏幕左上角的鼠标位置

  45. var x=e.screenX, y=e.screenY;

  46. for(;;){//self-->game

  47. //计算新的top和left,保存在变量top和left中

  48. var top=

  49. Math.floor(Math.random()*(self.maxTop+1));//防止形成闭包

  50. var left=

  51. Math.floor(Math.random()*(self.maxLeft+1));//防止形成闭包

  52. //如果鼠标位置不在pop的范围内

  53. if(y<top||y>top+self.height||x<left||x>left+self.width){

  54. //        就将pop移动到top和left的位置

  55. self.pop.moveTo(left,top);

  56. break;

  57. }

  58. }

  59. }

  60. }

  61. }
复制代码
点击开始游戏后:

202220dhb2obxbt42z3ooy.png

当你将鼠标移到图片上时,窗口会立刻变动,无法捕捉到图片。
回复

使用道具 举报


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 赣南网

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4

用微信扫一扫

赣南网