JavaScript权威指南笔记(7)

343页中说,document对象有一个URL属性,Location对象也表示的为该窗口中当前显示的文档的URL,但是如果定位到文档中的片段标识符(如#top),location对象会做相应的更改,而document.URL属性却不会改变。(书中原文)但实际上,在chrome中测试的时候发现,ducoment.URL属性是也会改变的。

 

location.assign("http://www.baidu.com")和location.href="http://www.baidu.com"看上去是一样的  //在当前页面到基础上载入新的文档,如果在新的文档按返回键,则会返回当前页面

location.replace("http://www.baidu.com")  //载入新的文档,如果在新的文档按返回键,则会返回首页

见344页14.2.2

现在有了ajax技术后,我们很多情况下都会使用无刷新的方式来进行文档载入,那么就会存在一个问题,就是这个无刷新的过程中url是不会改变的,那么如果实现前进和后退功能呢,这个时候我们可以在使用了ajax技术的地方采用a标签锚点方式。比如<a href="#page_1">第一页</a> 因为浏览器会读取这个锚点信息,所以url会进行改变,url改变了,那么自然这个网页就进入到了历史纪录中了。就可以采用前进后退到方式进行浏览了。
 -----------------------------------------------16.11.02 结束---------------------------------------------------------------------------


 -----------------------------------------------16.11.03 开始---------------------------------------------------------------------------

navigator对象

属性:

appName  除了IE为"Microsoft Internet Explorer",其它浏览器通常为了兼容取值为"Netscape"

appVersion  此属性通常以数字开始,并包含浏览器厂商和版本信息的详细字符串。没有标准的格式,所以没有办法直接用它来判断浏览器类型。

userAgent  浏览器在它的USER-AGENT HTTP头部中发送的字符串。这个属性通常包含appVersion中的所有信息。并且常常也可能包含其它细节。由于这个属性包涵绝大部分信息,因此浏览器嗅探代码通常用它来嗅探

platform   在其上运行浏览器的操作系统(并且可能是硬件)的字符串。

onLine  表示浏览器当前是否连接到网络

geolocation   定义用于确定用户地理位置信息的借接口。

javaEnabled()  一个非标准的方法,当浏览器可以运行java小程序时返回true。

cookieEnable()  非标准的方法,如果浏览器可以永久保存的cookie时,返回true。当cookie配置为“视具体情况而定”时可能会返回不正确的值。

 

screen对象

width和height  以像素为单位的窗口大小

availWidth和availHeight  实际可用的显示大小

见346页14.4.1

 -----------------------------------------------16.11.03 结束---------------------------------------------------------------------------


 -----------------------------------------------16.11.17 开始---------------------------------------------------------------------------

作为window对象属性的文档元素

如果一个dom元素用id属性来为元素命名,并且如果window对象没有此名称的属性(包括全局变量,因为全局变量也是挂载在window的属性上的),那么window对象就会将这个id作为自己的属性,用来表示对应的dom元素。(非常惊奇,原来还可以这样)

以下HTML元素如果有name属性的话,也会这样表现:

a applet area embed form frame frameset iframe img object

因为name不是唯一的,所以如果有多个相同的name属性,具有该名称的隐式全局变量会引用一个类数对象,这个类数组对象的元素是所有命名的元素。

见352页

 


 -----------------------------------------------16.11.17 结束---------------------------------------------------------------------------

 -----------------------------------------------16.11.19 结束---------------------------------------------------------------------------

接触到新名词HTMLCollection对象,如:document.images和document.forms。

像getElementsByClassName()返回的为NodeList对象。

HTMLCollection对象为只读的类数组对象。

见367页方框

 

node对象的属性

document对象,它Element对象和文档中表示文本的Text对象都是node对象。

parentNode   节点的父节点

childNodes    节点的子节点(NodeList对象)

firstChild       第一个子节点

lastChild     最后一个子节点

nextSibling   下一个兄弟节点

previousSibling 上一个兄弟节点

nodeType    节点类型,数字表示

nodeValue     Text或者Comment节点(即注释)的文本内容

nodeName    元素的标签名,全大写。

 

下面的属性忽略Text和Comment节点,只考虑element节点,除IE之外

firstElementChild

lastElementChild

nextElementSibling

previousElementSibling

childElementCount

 -----------------------------------------------16.11.19 结束---------------------------------------------------------------------------

 -----------------------------------------------16.11.21 开始---------------------------------------------------------------------------


有些HTML属性在js中是保留字。对于这些属性,一般的规则是为属性名加'html'例如,HTML中label的for属性就变成了‘htmlFor’,

但是class是个例外,在js中为className。

见376页中上部。

 

Node类型定义了attributes属性。对于element对象,attributes属性是只读的类数组对象,它代表元素的所有属性。并且还可以用属性名索引:

document.body.attributes[0]   //body元素的第一个属性

document.body.attributes.bgcolor  //元素的bgcolor属性

document.body.attributes["ONLOAD"]   //元素的onload属性

见378页15.4.4

 

通常设置innerHTML效率非常高,但是对innerHTML使用+= 通常效率低下,因为它既要序列化又要解析

outerHTML属性,包括了innerHTML以及元素本身。

见379页中部

 

 -----------------------------------------------16.11.21 结束---------------------------------------------------------------------------

 

 

---------------------------------------------相关函数-----------------------------------------------------

Object.create(o)  //创建对象,o为原型对象  121页6.2.1

o.hasOwnProperty("x")  //判断属性x是否为o的自有属性(非继承)  128页6.4

o.propertyIsEnumerable("x")  //判断属性是否为o的自有属性,并且可以枚举  128页6.4

Object.keys(o)  //返回一个由o对象中可枚举的自有属性的名称组成的数组。  132页上

Object.getOwnPropertyNames(o)  //返回o对象的所有自有属性的名称。  132页上

Object.getOwnPropertyDescriptor(o,"r")  //查询o对象的r属性的属性描述符对象

Object.defineProperty(o,"x",{ value:1,

                writable:true,

                enumerable:false,

                configurable:true});

 //给o对象设置x属性,并对x属性添加属性描述符

 

Object.defineProperties(o,{

  x:{value:1,  writable:true,  enumerable:true,  configurable:true},

  y:{value:2,  writable:true,  enumerable:true,  configurable:true},

  r:{

    get:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},

    enumerable:true,

    configurable:true

  }

});

//给o对象设置多个属性值,并对每个属性值添加属性描述符

 

Object.esExtensible(o)  //判断o对象是否是可扩展的

Object.preventExtensions(o)   //将o对象转换为不可扩展的,注意,如果转换为不可扩展的,则无法再将其转换为可扩展的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/0c0315b1d5014578b6e4d7ccca03f611.html