第八章:BOM

it2022-05-05  158

8.1window对象

  BOM的核心对象是window对象,它表示浏览器的一个实例,既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象。

  

var age = 29; function sayage(){ alert(this.age); } alert(window.age); sayage(); window.sayage();

  在全局作用域中定义了一个变量age和一个函数sayage(),他们被自动归在了window下,可以通过window.age访问age,也可以通过window.sayage()访问函数sayage(),由于sayage()存在于全局作用域中,故this.age被映射到window.age。

var age = 29; window.age = 29;

  其中,全局变量age是不可以用delede window.age 来删除的,但是window.age可以用delete window.age删除。因为使用var语句添加的window属性有一个名为[Configurable]的特性,值被设置为false,故不可以用delete删除。

 

var newvalue = oldvalue; 这样会报错,因为oldvalue没事有声明。 var newvalue = window.oldvalue 这样就不会报错,这是一次属性查询

  如果一个页面包含框架,则每个框架都有自己的window对象,并且保存在frames集合中,搜索方式可以为索引或者name值:window.frames[2]或者window.frames["name"]。top.frames[x],其中top始终指向最外层框架,也就是浏览器窗口。类似的parent指向当前框架的上层框架。在没有框架的情况下,parent一定定于top,且都等于window。

  window.moveTo(x,y):移动到(x,y)位置;window.moveBy(x,y):向右移动x,向下移动y。注意,这两个方法都不适用于框架,只能用于最外层window,且在很多浏览器中是禁用的。与之类似的:window.resizeTo(x,y),window.resizeBy(x,y)。

  window.open()接收四个参数:要加载的url、窗口目标、一个特性字符串和一个布尔值。通常只传递第一个参数,最后一个参数只在不打开新窗口的情况下使用。如果为其传递了第二个参数,且该参数是已有窗口或框架的名称,则会在其中加载第一个参数url,否则就会创建新的窗口并命名为topframe来打开url,在这种情况下,如果传递了第三个参数,则会根据第三个参数位置上的字符串创建一个新窗口或者新标签页,否则就会打开一个带有全部默认设置(工具栏等)的新窗口。在不打开新窗口的情况下会自动忽略第三个参数。第三个参数是一个逗号分隔的设置字符串,可以出现的设置选项是规定好的。

  window.open()会返回一个指向新窗口的引用。与其他window类似,但是可以对其有更多控制。通过调用close()方法还可以关闭窗口,但是只能关闭用window.open()打开的窗口,对于浏览器的主窗口,关闭需要用户允许。

  JavaScript是单线程语言,但是它允许通过设置超时值和间歇时间来调度代码在特定时刻执行。前者是在指定的时间过后运行,后者是每个指定时间就执行一次。

  超时值调用要使用window对象的settimeout()方法,它接受两个参数,要执行的代码和以毫秒表示的时间。其中第一个参数可以是一个包含js代码的字符串,也可以是一个函数。不建议传字符串。这个方法会返回一个数值ID,是计划执行代码的唯一标识符,可以通过它来取消超时调用。clearTimeout(ID)。

  间歇调用与超时调用类似,只不过它会按照指定的时间间隔重复执行代码,直到间歇调用被取消或者页面被卸载。setinterval()它接受的参数和settimeout相同,也会返回ID,用clearinterval(ID)取消。取消间歇调用很重要,要不然会一直运行。最好不要用间歇调用。

  浏览器通过alert()、confirm()和prompt()可以调用系统对话框向用户显示消息,其外观有操作系统及浏览器设置决定,无关css。显示这些对话框时会停止代码的运行,关掉后恢复。

  alert()会给用户发一个对话框,包含一定内容和一个确认按钮。用户只能在看完消息后关闭对话框。

  confirm()会 给用户发一个对话框,包含一定内容和确认、删除按钮,点击确认返回True,点击删除或者关闭对话框返回false。典型用法:

if (confirm("are you sure")){ alert("i am so glad to hear you are sure"); }else{ alert("i am sorry to hear you are not sure"); }

  prompt()会给用户发一个提示框,除了显示OK 和cancel外还有一个文本输入域,该方法接受两个参数,提示信息和文本输入域中的默认值(可谓空字符),若用户点击ok则返回输入域的值,若点击cancel或以其他方式关闭对话框,则返回null

8.2location

  location是最有用的BOM对象之一,特别的是,它既是window对象的属性,也是document对象的属性,也就是,window.location和document.location是同一个对象。

  location对象的所有属性:1.hash:返回url中的hash,若不包含散列则返回空字符串;

              2.host:返回服务器名称和端口号;

              3.hostname:只返回服务器名称;

              4.href:返回完整的url,location对象的tostring()方法也返回这个值;

              5.pathname:返回url中的目录和文件名;

              6.port:返回端口号,url中无端口号则返回空字符串;

              7.protocol:返回页面使用的协议,通常为http或者https;

              8.search:返回url的查询字符串,这个字符串以问号开头(没懂)。

  使用location对象可以通过很多方式来改变浏览器的位置,最常用的就是使用assign()方法并为其传递一个url,例location.assign(“http://www.baidu.com”);这样就可以打开新的url并在浏览器的历史记录中生成一个条记录(window.loacation = "http://www.baidu.com"  ;  location.href = "http://www.baidu.com")

  location.reload()自动以最优方式重新加载,可能直接从缓存中加载;location.reload(true)则是强制从服务器重新加载。

8.3navigator对象

   识别客户端浏览器。待补充

8.4screen对象

  JavaScript中有几个对象在编程中用处不大,screen就是其中之一。

8.5history对象

  保存着用户上网的历史记录,从窗口被打开的那一刻算起。history是window的属性,所以每个浏览器窗口,每个标签,每个框架都有自己的history与特定的window对象关联。处于安全考虑,开发人员无法得知用户浏览过的url。history.go(-1);  history.go(1);  history.go(2);  history.go("www.baidu.com");  history.back()相当于go(-1);  history.forward()相当于go(1);其length属相存着历史记录的数量。if history.length == o 那这应该是打开窗口后的第一个页面。虽然history不常用,但在创建自定义后退前进按钮以及检测当前页是否是用户历史记录中的第一个页面时,还是必须使用它。

 

转载于:https://www.cnblogs.com/iggys/p/7702522.html


最新回复(0)