`
bird12010
  • 浏览: 8070 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《javascript高级程序设计2》学习笔记8 BOM

阅读更多

8.1 window对象

 BOM对象的核心是window,表示浏览器的一个实例。

在浏览器中,window既是javascript访问浏览器的一个接口,又是ECMAScript规定的global对象。

 

8.1.1 全局作用域

 

8.1.2 窗口关系和框架

 如果页面中包含框架,则每个框架都有自己的window对象,保存在frames集合中。

可以通过window.frames[0]或window.frames[framesName]来引用。但最好使用top。

 

8.1.3 窗口位置

moveTo()  接收新位置的x和y坐标值

moveBy() 接收新位置的水平和垂直方向上移动的像素值

注:可能会被浏览器禁用

不适应框架,只能对最外层的window对象使用

 

8.1.4 窗口大小

 

  //取得页面视口大小的方法
         var pageWidth = window.innerWidth,
                pageHeight = window.innerHeight;
                
            if (typeof pageWidth != "number"){ //检查pageWidth保存的是否为数值
                if (document.compatMode == "CSS1Compat"){  //如果不是,检查document.compatMode确认页面是否处于标准模式
                    pageWidth = document.documentElement.clientWidth;
                    pageHeight = document.documentElement.clientHeight;
                } else {
                    pageWidth = document.body.clientWidth;
                    pageHeight = document.body.clientHeight;
                }
            }

            alert("Width: " + pageWidth);
            alert("Height: " + pageHeight);
risizeTo() 接收浏览器窗口的新宽度和高度

 

resizeBy() 接收新窗口与原窗口的宽度和高度之差。

注:可能会被浏览器禁用

不适应框架,只能对最外层的window对象使用

 

8.1.5 导航和打开窗口

 

window.open()调用close()方法可以关闭打开的窗口

wroxWin.close()

 

8.1.6 间歇调用和超时调用

setTimeout()

clearTimeout()

 

           //不要传递字符串,会影响性能
            setTimeout("alert('Hello world!') ", 1000);
            
            //推荐调用方式
            setTimeout(function() { 
                alert("Hello world!"); 
            }, 1000);
 

 

 

           //设置超时调用
            var timeoutId = setTimeout(function() {
                alert("Hello world!");
            }, 1000);
            
            //把它取消
            clearTimeout(timeoutId);
 

 

setInterval()

clearInterval()

 

8.1.7 系统对话框

alert()  接受一个字符串显示出来

confirm()  警告对话框,有确认取消选择

prompt()  提示框,提示用户输入文本

 

8.2 location对象

既是window对象的属性,也是document对象的属性 window.location==document.location

 

8.2.1 查询字符串参数

location.search返回从问号到url末尾的内容,不能逐个访问其中的每个查询字符串参数。

        function getQueryStringArgs(){
        
            //取得查询字符串并去掉开头的?
            var qs = (location.search.length > 0 ? location.search.substring(1) : "");
            
            //保存数据的对象
            var args = {};
            
            //取得每一项
            var items = qs.split("&");
            var item = null,
                name = null,
                value = null;
            
            //依次将每一项添加到args对象中
            for (var i=0; i < items.length; i++){
                item = items[i].split("=");
                name = decodeURIComponent(item[0]);
                value = decodeURIComponent(item[1]);
                args[name] = value;
            }
            
            return args;
        }

        //假如查询字符串是 ?q=javascript&num=10
        
        var args = getQueryStringArgs();
        
        alert(args["q"]);     //"javascript"
        alert(args["num"]);   //"10"

 

 

8.2.2 位置操作

一般使用location.href()

但是通过location.href会是浏览器中生成一条新记录,因此用户单击“后退”按钮都会导航到前一个页面,要禁用这种行为,可以使用location.replace方法。

location.reload(); //重新加载(有可能从缓存中加载)

location.reload(true); //重新加载(从服务器重新加载);

最好将reload()放在代码的最后一行

 

8.3 navigator对象

识别客户端的事实标准

 

8.3.1 检测插件

非ie用plugins数组,包含的属性

name:插件名

description: 插件描述

filename: 插件的文件名

length: 插件所处理的MIME类型数量

 

//检测插件,在ie中无效
            function hasPlugin(name){   //要检查的插件名
                name = name.toLowerCase();  //将传入的名称转换为小写,方便比较
                for (var i=0; i < navigator.plugins.length; i++){//迭代plugins数组
                    if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1){
                        //通过indexOf()检测每个name属性,以确认传入的name是否出现在字符串的某个地方避免混淆
                        return true;
                    }
                }
            
                return false;
            }
            
            //检测 flash
            alert(hasPlugin("Flash"));
            
            //检测 quicktime
            alert(hasPlugin("QuickTime"));
            
            //检测 Java
            alert(hasPlugin("Java"));
 

 

 

 //检测ie中的插件
            function hasIEPlugin(name){
                try {
                    new ActiveXObject(name);
                    return true;
                } catch (ex){
                    return false;
                }
            }
            
            //检测 flash
            alert(hasIEPlugin("ShockwaveFlash.ShockwaveFlash"));
            
            //检测 quicktime
            alert(hasIEPlugin("QuickTime.QuickTime"));
 针对每个插件分别创建检测函数

 

           //检测所有浏览器中的flash
            function hasFlash(){
                var result = hasPlugin("Flash");
                if (!result){
                    result = hasIEPlugin("ShockwaveFlash.ShockwaveFlash");
                }
                return result;
            }
            
            //检测所有浏览器的 quicktime 
            function hasQuickTime(){
                var result = hasPlugin("QuickTime");
                if (!result){
                    result = hasIEPlugin("QuickTime.QuickTime");
                }
                return result;
            }
            
            //检测 flash
            alert(hasFlash());
            
            //检测 quicktime
            alert(hasQuickTime());
 

8.3.2 注册处理程序

FireFox 2.0为navigator新增registerContentHandler 和 registerProtocolHandler 的方法。(这两个方法在html5中有定义)。可以让一个站点指明它可以处理特定类型的信息。

registerContentHandler接受三个参数:要处理的MIME类型、可以处理该MIME类型的页面的URL以及应用程序的名字。

 

8.4 screen对象

用处不是很大,主要存储浏览器窗口外部的显示器的信息,如像素宽度和高度等。每个浏览器中的screen对象都包含着各不相同的属性。

 

//不一定所有环境有效
window.resizeTo(screen.availWidth, screen.availHeight);

 

8.5 history对象

用处不是很大,主要存储浏览器窗口外部的显示器的信息,如像素宽度和高度等。每个浏览器中的screen对象都包含着各不相同的属性。

history.go(-1) | history.back(); //后退一页

history.go(1) | history.forward();//前进一页

history.go(n);//前进n页

history.go(‘baidu.com’);//跳转到最近的baidu页面     也可以使用back()和foward()代替

history还有一个length属性,保存着历史记录的数量。如果history.lenght 等于 0,那么应该是用户打开窗口后的第一个页面

分享到:
评论

相关推荐

    对javascript的一点点认识总结《javascript高级程序设计》读书笔记

    在深入探讨JavaScript编程语言之前,...在《JavaScript高级程序设计》这本书中,作者深入探讨了这些概念,并提供了一系列实用的编程技巧和最佳实践,这对于任何希望深化JavaScript知识的开发者来说都是一份宝贵的资源。

    《JavaScript程序设计》笔记(基础1)

    JavaScript程序设计的基础篇涵盖了编程语言的基本概念和基础知识,这些概念和知识是进一步学习JavaScript深入内容的前提和基础。了解和掌握这些知识点,对于前端开发工程师的学习和工作至关重要。随着前端技术的不断...

    javascript学习笔记1

    ### JavaScript 学习笔记1:数组、DOM与BOM简要总结 #### 数组方法概述 在JavaScript中,数组是一种非常重要的数据结构,用于存储多个值。数组对象提供了多种方法来帮助我们操作数组中的元素。 - **pop()**:从...

    JavaScript高级程序设计(第3版)学习笔记 概述

    JavaScript,作为一种广泛应用于网页和网络应用的...通过学习《JavaScript高级程序设计(第3版)》这样的专业书籍,不仅可以系统地梳理JavaScript的基础,还能了解到一些高级用法和最佳实践,对提升编程技能大有裨益。

    javaScript学习笔记总结.docx

    它由网景公司的Brendan Eich在1995年发明,最初设计目的是增强网页的交互性,验证表单数据。JavaScript的运行环境是浏览器,它不需要预编译,而是由浏览器实时解析执行。 JavaScript的核心是ECMAScript,它定义了...

    JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性

    ECMAScript 5(简称ES5)是ECMAScript的一个重要版本,带来了许多新特性,这些新特性在《JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性》中被详细讨论。 ES5相对于之前版本,如ECMAScript 3(简称...

    适用于Web开发人员JavaScript::closed_book:对《 JavaScript高级程序设计》第三版的阅读,整理,理解,总结,总结,延伸而记录的学习笔记

    JavaScript是Web开发中的核心语言,尤其对于前端开发者来说至关重要。《JavaScript高级程序设计》第三版是...在《JavaScript高级程序设计》第三版的学习过程中,结合实际项目练习,将有助于更好地理解和掌握这些概念。

    JavaScript高级程序设计(第3版)学习笔记6 初识js对象

    学习JavaScript对象时,可以参考的对象模型有几种,包括ECMAScript规范、BOM(浏览器对象模型)和DOM(文档对象模型)。ECMAScript定义了语言的基础,而BOM和DOM提供了与浏览器交互和操作网页内容的接口。在使用...

    JavaScript学习笔记

    JavaScript代码不需要预编译,由浏览器中的JavaScript引擎即时解释执行,这使得它易于学习和使用,但同时也意味着它的运行速度相对较慢。 JavaScript的主要内容涵盖了ECMAScript规范、DOM(文档对象模型)用于操作...

    java私人学习笔记

    Java私人学习笔记主要涵盖了Java编程语言以及与其相关的几个著名框架——Spring、Struts2和Hibernate,还有前端开发中常用的JavaScript。这些技术在IT行业中的应用广泛,是许多企业级应用开发的基础。以下是对这些...

    JS程序设计笔记JS程序设计笔记.doc

    JavaScript(简称JS)是一种轻量级的解释型编程语言,主要用于客户端的Web开发,赋予网页动态功能。JS不仅用于网页,还广泛应用于网页游戏、地图搜索、股市信息查询以及各种Web聊天应用等场景。它是许多前端框架,如...

    JavaScript基础笔记-尚硅谷视频自己总结

    - **现代阶段**:高级语言出现,如JavaScript,它们接近自然语言,易于理解和编写。 #### 二、JavaScript起源与简史 - **起源**:JavaScript诞生于1995年,最初是为了网页前端验证而设计的。它可以用来检查用户的...

    css_html_javascript速成笔记

    5. **浏览器对象模型**:BOM(Browser Object Model)提供了对浏览器窗口、历史、导航等的访问,允许JavaScript操作浏览器功能。 6. **ES6及更高版本**:ECMAScript的新特性,如let/const声明、箭头函数、模板字符...

    web宝典(HTML、css、JavaScript).pdf

    《Web宝典》是一份详尽的IT学习资料,涵盖了HTML、CSS、JavaScript等核心Web开发技术,以及Bootstrap、BOM、DOM、Ajax、Node.js和微信小程序等多个方面。这份笔记整理旨在帮助初学者快速掌握Web开发的基础知识,并...

    js基础知识,课堂笔记

    JavaScript,简称JS,是一种广泛应用于Web开发的高级编程语言,主要负责网页的动态...了解这些基本概念是学习JavaScript的基础,通过不断的实践和深入学习,开发者可以构建出复杂的Web应用程序,提供丰富的用户体验。

    前端技术笔记

    ### JavaScript基础及高级知识点...这些内容不仅涵盖了JavaScript的基础语法和内置对象,还包括了BOM、DOM以及事件处理等高级主题。对于初学者来说,掌握这些核心概念对于后续学习JavaScript及其相关框架具有重要意义。

    《前端开发笔记本》 中文字版 非扫描版 带标签 超清晰

    #### 二、JavaScript程序设计 JavaScript是实现网页交互的核心语言,本节内容涉及: 1. **JavaScript介绍**:简述JavaScript的发展历程及其在现代网页开发中的地位。 2. **调试器**:介绍如何使用浏览器提供的...

Global site tag (gtag.js) - Google Analytics