BOM中的window对象

window 对象

window对象表示一个浏览器的一个实例。浏览器中,window对象有两个角色:

  • 访问浏览器窗口的一个接口
  • ECMAScript中的Global对象
  1. 全局作用域

window对象作为全局作用域时,里面的所有变量和函数都会变为window对象的属性和方法。

有以下几点需要注意:

  • 如果直接定义全局变量,则次变量不能当做window对象的属性删除
      var a = 1;
      delete window.a;             // false
      // 上面这个举动在IE9以下浏览器中会报错
    
  • 如果直接在全局中赋值给变量一个不存在的变量会产生错误,而把这个变量作为window对象赋值则不会产生错误。
      var a = b;
      alert(a);     // 此举动会让浏览器报错
      var a = window.b;
      alert(a);     // undefined 
    
  1. frame框架窗口中的window对象

如果在页面中包含框架,那么每个框架中都会有自己的一个window对象。

如何获取框架中的一个frame页面的中的全局对象:

frame.html

打开后的frame.html

举个栗子:如果在topFrame页面中定义一个全局变量: var a = 1; ,则此变量为window.frames[0]对象的属性。

另外,最外层框架不是中的全局对象不再是window,而是top。

  1. 窗口位置

获取window对象的位置(这里的window对象是作为一个浏览器窗口):

  • screenLeft 和 screenTop 。 IE、Sanfari、Opera、Chrome 支持
  • screenX 和 screenY 。 Firefox支持

为了兼容所有浏览器,可以这样定义窗口位置:
var leftPos = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX;
var topPos = (typeof window.screenTop == "number") ? window.screenTop : window.screenY;

自定义修改窗口位置:

  • moveTo(x, y) 相对浏览器窗口移动
  • moveBy(x, y) 相对当前移动

注意:这两个方法只能相对于浏览器窗口,不适用于框架。另外此方法只能在IE中可以直接改变窗口位置,其他浏览器则只能在window.open()中打开的窗口中使用。

  1. 窗口大小

获取浏览器窗口大小:

  • innerWidth 和 innerHeight 表示浏览器视口区域的宽度和高度
  • outerWidth 和 outerHeight 表示浏览器整个窗口的宽度和高度

以上window对象属性只是适用于 IE9+ 及其他所有浏览器,如果兼容IE8及以下,可以利用以下属性:

  • document.documentElement.clientWidth 和 document.documentElement.clientHeight 表示视口区域大小,适用于各主流浏览器的标准模式
  • document.body.clientWidth 和 document.body.clientHeight 适用于IE6中的混杂模式中获取视口区域大小,现在几乎已经废弃

自定义修改窗口大小:

  • resizeTo(w ,h) 绝对大小
  • resizeBy(w, h) 相对原来增加或者减少

注意:与moveTo,moveBy方法的特性相同

  1. 窗口导航
  • window.open(url, frame, ...) 打开一个窗口,URL参数后面的参数可以是框架名称、控制窗口特性如_self、 _parent、 _top、 _blank 等。

    举个栗子:var newWin = window.open("https://www.baidu.com/", "_black", "height=400,width=400,top=10,left=10,resizable=yes");
    表示打开了一个400 X 400 像素,距离上左10像素的可以改变其大小的浏览器窗口。
    而且在新窗口中我们终于可以没有顾忌的适用moveTo和resizeTo这两个属性了:

      // 调整大小
      newWin.resizeTo(500, 500);
      // 移动位置
      newWin.moveTo(100, 100);
    
  • newWin.close(); 关闭打开的这个窗口

  1. setTimeout 和 setInterval
  • setTimeout() 超时器

    setTimeout(func,time); 参数为执行的代码(最好是一个匿名函数)和一个毫秒数表示的时间。
    举个栗子:

      setTimeout(function() {
        alert("时间到啦");
      }, 1000);
    
      // 一秒后弹出 时间到啦。
    

    清除超时器:在设置超时器的时候,创建一个变量去保存这个超时器的ID

      var id = setTimeout(function() {
        alert("时间到啦");
      }, 1000);
    
      clearTimeout(id);
    
      // 此处不会有任何动作发生,因为在1s内,超时器已经被清除
    
    • setInterval() 定时器

      使用方式与超时器相同,但是不同的是每过一段时间都会调用要执行的代码。

      举个栗子:

        setInterval(function() {
          console.log("过去了一秒");
        }, 1000);
      
        // 没一秒都是输出一句话 过去了一秒
      

      清除定时器

      和超时器要一样,定时器的调用也会返回一个id,此时需要clearInterval()来清除。

  1. 各种弹框
  • alert() 仅仅是简单的弹出消息,参数为要弹出的内容。
  • confirm() 参数也是要弹出的内容,但是包含两个按钮 确定 和 取消 。点击确定后函数会返回true,点击取消后函数会返回false。
  • prompt() 参数除了要弹出的内容外还有一个可选参数,为对话框中的值,点击确定后会返回对话框中的内容。

最近工作繁忙,如有出错,还请各位读者大大指出!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • window 对象 BOM的核心对象是window,它表示浏览器的一个实例。在浏览器中,window对象有双重角色...
    胖胖冰阅读 727评论 0 2
  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 5,056评论 0 7
  • BOM是浏览器对象模型 Window对象 BOM 的核心对象是window,它表示浏览器的一个实例。 在浏览器中,...
    shanruopeng阅读 431评论 0 1
  • 第一章: JS简介 从当初简单的语言,变成了现在能够处理复杂计算和交互,拥有闭包、匿名函数, 甚至元编程等...
    LaBaby_阅读 1,634评论 0 6
  • 1 一心向凡铁 无意染锋芒 无奈山河乱 熔铸保家国 2 昨日北方天狼来 今宵送君为家国 我自扶摇在山河 等君再饮一...
    梵夜阅读 433评论 0 1