日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

BOM--window对象

發(fā)布時(shí)間:2023/12/10 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BOM--window对象 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

BOM 的核心對(duì)象是window,它表示瀏覽器的一個(gè)實(shí)例。在瀏覽器中,window 對(duì)象有雙重角色,它既是通過(guò)JavaScript 訪問(wèn)瀏覽器窗口的一個(gè)接口,又是ECMAScript 規(guī)定的Global 對(duì)象。這意味著在網(wǎng)頁(yè)中定義的任何一個(gè)對(duì)象、變量和函數(shù),都以window 作為其Global 對(duì)象,因此有權(quán)訪問(wèn)parseInt()等方法。

1、全局作用域

由于window 對(duì)象同時(shí)扮演著ECMAScript 中Global 對(duì)象的角色,因此所有在全局作用域中聲明的變量、函數(shù)都會(huì)變成window 對(duì)象的屬性和方法。

var age = 29; function sayAge(){alert(this.age); } alert(window.age); //29 sayAge(); //29 window.sayAge(); //29//變量age和函數(shù)sayAge()是在全局作用域下定義的,所以被自動(dòng)歸在了window對(duì)象,所以可以通過(guò)window.age訪問(wèn)age,通過(guò)widow.sayAge()訪問(wèn)函數(shù)sayAge()

全局變量不能通過(guò)delete 操作符刪除,而直接在window 對(duì)象上的定義的屬性可以。

var age = 29; window.color = "red";//在IE < 9 時(shí)拋出錯(cuò)誤,在其他所有瀏覽器中都返回false delete window.age;//在IE < 9 時(shí)拋出錯(cuò)誤,在其他所有瀏覽器中都返回true delete window.color; //returns true alert(window.age); //29 alert(window.color); //undefined

剛才使用var 語(yǔ)句添加的window 屬性有一個(gè)名為[[Configurable]]的特性,這個(gè)特性的值被設(shè)置為false,因此這樣定義的屬性不可以通過(guò)delete 操作符刪除。IE8及更早版本在遇到使用delete刪除window 屬性的語(yǔ)句時(shí),不管該屬性最初是如何創(chuàng)建的,都會(huì)拋出錯(cuò)誤,以示警告。IE9 及更高版本不會(huì)拋出錯(cuò)誤。

嘗試訪問(wèn)未聲明的變量會(huì)拋出錯(cuò)誤,但是通過(guò)查詢window 對(duì)象,可以知道某個(gè)可能未聲明的變量是否存在。

//這里會(huì)拋出錯(cuò)誤,因?yàn)閛ldValue 未定義 var newValue = oldValue;//這里不會(huì)拋出錯(cuò)誤,因?yàn)檫@是一次屬性查詢,newValue 的值是undefined var newValue = window.oldValue;

2、窗口關(guān)系及框架

如果頁(yè)面中包含框架,則每個(gè)框架都擁有自己的window 對(duì)象,并且保存在frames 集合中。在frames集合中,可以通過(guò)數(shù)值索引(從0 開(kāi)始,從左至右,從上到下)或者框架名稱(chēng)來(lái)訪問(wèn)相應(yīng)的window 對(duì)象。每個(gè)window 對(duì)象都有一個(gè)name 屬性,其中包含框架的名稱(chēng)。下面是一個(gè)包含框架的頁(yè)面:

<html><head><title>Frameset Example</title></head><frameset rows="160,*"><frame src="frame.htm" name="topFrame"><frameset cols="50%,50%"><frame src="anotherframe.htm" name="leftFrame"><frame src="yetanotherframe.htm" name="rightFrame"></frameset></frameset> </html>

以上代碼創(chuàng)建了一個(gè)框架集,其中一個(gè)框架居上,兩個(gè)框架居下。對(duì)這個(gè)例子而言,可以通過(guò)window.frames[0]或者window.frames["topFrame"]來(lái)引用上方的框架。不過(guò),恐怕你最好使用top 而非window 來(lái)引用這些框架(例如,通過(guò)top.frames[0])。

我們知道,top 對(duì)象始終指向最高(最外)層的框架,也就是瀏覽器窗口。使用它可以確保在一個(gè)框架中正確地訪問(wèn)另一個(gè)框架。因?yàn)閷?duì)于在一個(gè)框架中編寫(xiě)的任何代碼來(lái)說(shuō),其中的window 對(duì)象指向的都是那個(gè)框架的特定實(shí)例,而非最高層的框架。圖8-1 展示了在最高層窗口中,通過(guò)代碼來(lái)訪問(wèn)前面例子中每個(gè)框架的不同方式。

與top 相對(duì)的另一個(gè)window 對(duì)象是parent對(duì)象。顧名思義,parent(父)對(duì)象始終指向當(dāng)前框架的直接上層框架。在某些情況下,parent 有可能等于top;但在沒(méi)有框架的情況下,parent 一定等于top(此時(shí)它們都等于window)。

<html><head><title>Frameset Example</title></head><frameset rows="100,*"><frame src="frame.htm" name="topFrame"><frameset cols="50%,50%"><frame src="anotherframe.htm" name="leftFrame"><frame src="anotherframeset.htm" name="rightFrame"></frameset></frameset> </html>

這個(gè)框架集中的一個(gè)框架包含了另一個(gè)框架集,該框架集(anotherframeset.htm)的代碼如下所示。

<html><head><title>Frameset Example</title></head><frameset cols="50%,50%"><frame src="red.htm" name="redFrame"><frame src="blue.htm" name="blueFrame"></frameset> </html>

結(jié)果如下:瀏覽器在加載完第一個(gè)框架集以后,會(huì)繼續(xù)將第二個(gè)框架集加載到rightFrame 中。如果代碼位于redFrame(或blueFrame)中,那么parent 對(duì)象指向的就是rightFrame。可是,如果代碼位于topFrame 中,則parent 指向的是top,因?yàn)閠opFrame 的直接上層框架就是最外層框架。

注意,除非最高層窗口是通過(guò)window.open()打開(kāi)的(本章后面將會(huì)討論),否則其window 對(duì)象的name 屬性不會(huì)包含任何值。
與框架有關(guān)的最后一個(gè)對(duì)象是self對(duì)象,它始終指向window;實(shí)際上,self 和window 對(duì)象可以互換使用。引入self 對(duì)象的目的只是為了與top 和parent 對(duì)象對(duì)應(yīng)起來(lái),因此它不格外包含其他值。
所有這些對(duì)象(top、parent、self)都是window 對(duì)象的屬性,可以通過(guò)window.parent、window.top 等形式來(lái)訪問(wèn)。同時(shí),這也意味著可以將不同層次的window 對(duì)象連綴起來(lái),例如window.parent.parent.frames[0]。

3、窗口位置

用來(lái)確定和修改window 對(duì)象位置的屬性和方法有很多。IE、Safari、Opera 和Chrome 都提供了screenLeft 和screenTop 屬性,分別用于表示窗口相對(duì)于屏幕左邊和上邊的位置。Firefox 則在screenX 和screenY 屬性中提供相同的窗口位置信息,Safari 和Chrome 也同時(shí)支持這兩個(gè)屬性。Opera雖然也支持screenX 和screenY 屬性,但與screenLeft 和screenTop 屬性并不對(duì)應(yīng),因此建議大家不要在Opera 中使用它們。使用下列代碼可以跨瀏覽器取得窗口左邊和上邊的位置。

var leftPos = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX; var topPos = (typeof window.screenTop == "number") ? window.screenTop : window.screenY;//運(yùn)用二元操作符首先確定screenLeft 和screenTop 屬性是否存在,如果是(在IE、Safari、Opera 和Chrome 中),則取得這兩個(gè)屬性的值。如果不存在(在Firefox 中),則取得screenX和screenY 的值。

在使用這些值的過(guò)程中,還必須注意一些小問(wèn)題。在IE、Opera 中,screenLeft 和screenTop 中保存的是從屏幕左邊和上邊到由window 對(duì)象表示的頁(yè)面可見(jiàn)區(qū)域的距離。換句話說(shuō),如果window 對(duì)象是最外層對(duì)象,而且瀏覽器窗口緊貼屏幕最上端——即y 軸坐標(biāo)為0,那么screenTop 的值就是位于頁(yè)面可見(jiàn)區(qū)域上方的瀏覽器工具欄的像素高度。但是,在Chrome、Firefox 和Safari 中,screenY 或screenTop中保存的是整個(gè)瀏覽器窗口相對(duì)于屏幕的坐標(biāo)值,即在窗口的y 軸坐標(biāo)為0 時(shí)返回0。

更讓人捉摸不透是,Firefox、Safari 和Chrome 始終返回頁(yè)面中每個(gè)框架的top.screenX 和top.screenY 值。即使在頁(yè)面由于被設(shè)置了外邊距而發(fā)生偏移的情況下,相對(duì)于window 對(duì)象使用screenX 和screenY 每次也都會(huì)返回相同的值。而IE 和Opera 則會(huì)給出框架相對(duì)于屏幕邊界的精確坐標(biāo)值。

最終結(jié)果,就是無(wú)法在跨瀏覽器的條件下取得窗口左邊和上邊的精確坐標(biāo)值。然而,使用moveTo()和moveBy()方法倒是有可能將窗口精確地移動(dòng)到一個(gè)新位置。這兩個(gè)方法都接收兩個(gè)參數(shù),其中moveTo()接收的是新位置的x 和y 坐標(biāo)值,而moveBy()接收的是在水平和垂直方向上移動(dòng)的像素?cái)?shù)。

//將窗口移動(dòng)到屏幕左上角 window.moveTo(0,0);//將窗向下移動(dòng)100 像素 window.moveBy(0,100);//將窗口移動(dòng)到(200,300) window.moveTo(200,300);//將窗口向左移動(dòng)50 像素 window.moveBy(-50,0);

需要注意的是,這兩個(gè)方法可能會(huì)被瀏覽器禁用;而且,在Opera 和IE 7(及更高版本)中默認(rèn)就是禁用的。另外,這兩個(gè)方法都不適用于框架,只能對(duì)最外層的window 對(duì)象使用。

4、窗口大小

IE9+、Firefox、Safari、Opera 和Chrome 均為此提供了4 個(gè)屬性:innerWidth、innerHeight、outerWidth 和outerHeight。在IE9+、Safari 和Firefox中,outerWidth 和outerHeight 返回瀏覽器窗口本身的尺寸(無(wú)論是從最外層的window 對(duì)象還是從某個(gè)框架訪問(wèn))。在Opera 中,這兩個(gè)屬性的值表示頁(yè)面視圖容器(“頁(yè)面視圖容器”指的是Opera 中單個(gè)標(biāo)簽頁(yè)對(duì)應(yīng)的瀏覽器窗口)的大小。而innerWidth 和innerHeight則表示該容器中頁(yè)面視圖區(qū)的大小(減去邊框?qū)挾?#xff09;。在Chrome 中,outerWidth、outerHeight、innerWidth、innerHeight 返回相同的值,即視口(viewport)大小而非瀏覽器窗口大小。

IE8 及更早版本沒(méi)有提供取得當(dāng)前瀏覽器窗口尺寸的屬性;不過(guò),它通過(guò)DOM 提供了頁(yè)面可見(jiàn)區(qū)域的相關(guān)信息。

在IE、Firefox、Safari、Opera 和Chrome 中,document.documentElement.clientWidth 和document.documentElement.clientHeight 中保存了頁(yè)面視口的信息。在IE6 中,這些屬性必須在標(biāo)準(zhǔn)模式下才有效;如果是混雜模式,就必須通過(guò)document.body.clientWidth 和document.body.clientHeight 取得相同信息。而對(duì)于混雜模式下的Chrome,則無(wú)論通過(guò)document.documentElement還是document.body 中的clientWidth 和clientHeight 屬性,都可以取得視口的大小。

var pageWidth = window.innerWidth, pageHeight = window.innerHeight; if (typeof pageWidth != "number"){if (document.compatMode == "CSS1Compat"){//標(biāo)準(zhǔn)模式下pageWidth = document.documentElement.clientWidth;pageHeight = document.documentElement.clientHeight;} else {//混雜模式下pageWidth = document.body.clientWidth;pageHeight = document.body.clientHeight;} }

在以上代碼中,我們首先將window.innerWidth 和window.innerHeight 的值分別賦給了pageWidth 和pageHeight。然后檢查pageWidth 中保存的是不是一個(gè)數(shù)值;如果不是,則通過(guò)檢查document.compatMode來(lái)確定頁(yè)面是否處于標(biāo)準(zhǔn)模式。如果是,則分別使用document.documentElement.clientWidth 和document.documentElement.client-Height 的值。否則,就使用document.body.clientWidth 和document.body.clientHeight 的值。

對(duì)于移動(dòng)設(shè)備,window.innerWidth 和window.innerHeight 保存著可見(jiàn)視口,也就是屏幕上可見(jiàn)頁(yè)面區(qū)域的大小。移動(dòng)IE 瀏覽器不支持這些屬性,但通過(guò)document.documentElement.client-Width 和document.documentElement.clientHeihgt 提供了相同的信息。隨著頁(yè)面的縮放,這些值也會(huì)相應(yīng)變化。

在其他移動(dòng)瀏覽器中,document.documentElement 度量的是布局視口,即渲染后頁(yè)面的實(shí)際大小(與可見(jiàn)視口不同,可見(jiàn)視口只是整個(gè)頁(yè)面中的一小部分)。移動(dòng)IE 瀏覽器把布局視口的信息保存在document.body.clientWidth 和document.body.clientHeight 中。這些值不會(huì)隨著頁(yè)面縮放變化。
由于與桌面瀏覽器間存在這些差異,最好是先檢測(cè)一下用戶是否在使用移動(dòng)設(shè)備,然后再?zèng)Q定使用哪個(gè)屬性。

另外,使用resizeTo()和resizeBy()方法可以調(diào)整瀏覽器窗口的大小。這兩個(gè)方法都接收兩個(gè)參數(shù),其中resizeTo()接收瀏覽器窗口的新寬度和新高度,而resizeBy()接收新窗口與原窗口的寬度和高度之差。

//調(diào)整到100×100 window.resizeTo(100, 100);//調(diào)整到200×150 window.resizeBy(100, 50);//調(diào)整到 300×300 window.resizeTo(300, 300);

需要注意的是,這兩個(gè)方法與移動(dòng)窗口位置的方法類(lèi)似,也有可能被瀏覽器禁用;而且,在Opera和IE7(及更高版本)中默認(rèn)就是禁用的。另外,這兩個(gè)方法同樣不適用于框架,而只能對(duì)最外層的window 對(duì)象使用。

5、導(dǎo)航和打開(kāi)窗口

使用window.open()方法既可以導(dǎo)航到一個(gè)特定的URL,也可以打開(kāi)一個(gè)新的瀏覽器窗口。這個(gè)方法可以接收4 個(gè)參數(shù):要加載的URL、窗口目標(biāo)、一個(gè)特性字符串以及一個(gè)表示新頁(yè)面是否取代瀏覽器歷史記錄中當(dāng)前加載頁(yè)面的布爾值。通常只須傳遞第一個(gè)參數(shù),最后一個(gè)參數(shù)只在不打開(kāi)新窗口的情況下使用。

如果為window.open()傳遞了第二個(gè)參數(shù),而且該參數(shù)是已有窗口或框架的名稱(chēng),那么就會(huì)在具有該名稱(chēng)的窗口或框架中加載第一個(gè)參數(shù)指定的URL??聪旅娴睦印?/p> //等同于< a href="http://www.wrox.com" target="topFrame"></a> window.open("http://www.wrox.com/", "topFrame");

第二個(gè)參數(shù)也可以是下列任何一個(gè)特殊的窗口名稱(chēng):_self(默認(rèn))、_parent(在父窗體打開(kāi))、_top(在當(dāng)前窗口打開(kāi)并替換當(dāng)前的整個(gè)窗體)或_blank(在新窗體打開(kāi))。

(1)彈出窗口

如果給window.open()傳遞的第二個(gè)參數(shù)并不是一個(gè)已經(jīng)存在的窗口或框架,那么該方法就會(huì)根據(jù)在第三個(gè)參數(shù)位置上傳入的字符串創(chuàng)建一個(gè)新窗口或新標(biāo)簽頁(yè)。如果沒(méi)有傳入第三個(gè)參數(shù),那么就會(huì)打開(kāi)一個(gè)帶有全部默認(rèn)設(shè)置(工具欄、地址欄和狀態(tài)欄等)的新瀏覽器窗口(或者打開(kāi)一個(gè)新標(biāo)簽頁(yè)——根據(jù)瀏覽器設(shè)置)。在不打開(kāi)新窗口的情況下,會(huì)忽略第三個(gè)參數(shù)。

第三個(gè)參數(shù)是一個(gè)逗號(hào)分隔的設(shè)置字符串,表示在新窗口中都顯示哪些特性。下表列出了可以出現(xiàn)在這個(gè)字符串中的設(shè)置選項(xiàng)。

表中所列的部分或全部設(shè)置選項(xiàng),都可以通過(guò)逗號(hào)分隔的名值對(duì)列表來(lái)指定。其中,名值對(duì)以等號(hào)表示(注意,整個(gè)特性字符串中不允許出現(xiàn)空格),如下面的例子所示:

window.open("http://www.wrox.com/","wroxWindow","height=400,width=400,top=10,left=10,resizable=yes");

window.open()方法會(huì)返回一個(gè)指向新窗口的引用。引用的對(duì)象與其他window 對(duì)象大致相似,但我們可以對(duì)其進(jìn)行更多控制。通過(guò)這個(gè)返回的對(duì)象,可以像操作其他窗口一樣操作新打開(kāi)的窗口:

var wroxWin = window.open("http://www.wrox.com/","wroxWindow","height=400,width=400,top=10,left=10,resizable=yes");//調(diào)整大小 wroxWin.resizeTo(500,500);//移動(dòng)位置 wroxWin.moveTo(100,100);//調(diào)用close()方法還可以關(guān)閉新打開(kāi)的窗口。 wroxWin.close();//這個(gè)方法僅適用于通過(guò)window.open()打開(kāi)的彈出窗口,對(duì)于瀏覽器的主窗口,如果沒(méi)有用戶的允許是不能關(guān)閉它的。

新創(chuàng)建的window 對(duì)象有一個(gè)opener 屬性,其中保存著打開(kāi)它的原始窗口對(duì)象。這個(gè)屬性只在彈出窗口中的最外層window 對(duì)象(top)中有定義,而且指向調(diào)用window.open()的窗口或框架。

var wroxWin = window.open("http://www.wrox.com/","wroxWindow","height=400,width=400,top=10,left=10,resizable=yes"); alert(wroxWin.opener == window); //true

雖然彈出窗口中有一個(gè)指針指向打開(kāi)它的原始窗口,但原始窗口中并沒(méi)有這樣的指針指向彈出窗口。窗口并不跟蹤記錄它們打開(kāi)的彈出窗口,因此我們只能在必要的時(shí)候自己來(lái)手動(dòng)實(shí)現(xiàn)跟蹤。

有些瀏覽器(如IE8 和Chrome)會(huì)在獨(dú)立的進(jìn)程中運(yùn)行每個(gè)標(biāo)簽頁(yè)。當(dāng)一個(gè)標(biāo)簽頁(yè)打開(kāi)另一個(gè)標(biāo)簽頁(yè)時(shí),如果兩個(gè)window 對(duì)象之間需要彼此通信,那么新標(biāo)簽頁(yè)就不能運(yùn)行在獨(dú)立的進(jìn)程中。在Chrome中,將新創(chuàng)建的標(biāo)簽頁(yè)的opener 屬性設(shè)置為null,即表示在單獨(dú)的進(jìn)程中運(yùn)行新標(biāo)簽頁(yè)

var wroxWin = window.open("http://www.wrox.com/","wroxWindow","height=400,width=400,top=10,left=10,resizable=yes"); wroxWin.opener = null; //將opener 屬性設(shè)置為null 就是告訴瀏覽器新創(chuàng)建的標(biāo)簽頁(yè)不需要與打開(kāi)它的標(biāo)簽頁(yè)通信,因此可以在獨(dú)立的進(jìn)程中運(yùn)行。標(biāo)簽頁(yè)之間的聯(lián)系一旦切斷,將沒(méi)有辦法恢復(fù)。

(2)彈出窗口屏蔽程序

如果是瀏覽器內(nèi)置的屏蔽程序阻止的彈出窗口,那么window.open()很可能會(huì)返回null。此時(shí),只要檢測(cè)這個(gè)返回的值就可以確定彈出窗口是否被屏蔽了,如下面的例子所示。

var wroxWin = window.open("http://www.wrox.com", "_blank"); if (wroxWin == null){alert("The popup was blocked!"); }

如果是瀏覽器擴(kuò)展或其他程序阻止的彈出窗口,那么window.open()通常會(huì)拋出一個(gè)錯(cuò)誤。因此,要想準(zhǔn)確地檢測(cè)出彈出窗口是否被屏蔽,必須在檢測(cè)返回值的同時(shí),將對(duì)window.open()的調(diào)用封裝在一個(gè)try-catch 塊中,如下所示。

var blocked = false; try {var wroxWin = window.open("http://www.wrox.com", "_blank");if (wroxWin == null){blocked = true;} } catch (ex){blocked = true; } if (blocked){alert("The popup was blocked!"); }

在任何情況下,以上代碼都可以檢測(cè)出調(diào)用window.open()打開(kāi)的彈出窗口是不是被屏蔽了。但要注意的是,檢測(cè)彈出窗口是否被屏蔽只是一方面,它并不會(huì)阻止瀏覽器顯示與被屏蔽的彈出窗口有關(guān)的消息。

6、間歇調(diào)用和超時(shí)調(diào)用

JavaScript 是單線程語(yǔ)言,但它允許通過(guò)設(shè)置超時(shí)值(在指定的時(shí)間過(guò)后執(zhí)行代碼)和間歇時(shí)間值(每隔指定的時(shí)間就執(zhí)行一次代碼)來(lái)調(diào)度代碼在特定的時(shí)刻執(zhí)行。

超時(shí)調(diào)用 window 對(duì)象的 setTimeout()方法,它接受兩個(gè)參數(shù):要執(zhí)行的代碼和以毫秒表示的時(shí)間。其中,第一個(gè)參數(shù)可以是一個(gè)包含JavaScript代碼的字符串(就和在 eval()函數(shù)中使用的字符串一樣),也可以是一個(gè)函數(shù)。例如,下面對(duì) setTimeout() 的兩次調(diào)用都會(huì)在一秒鐘后顯示一個(gè)警告框。

//不建議傳遞字符串!由于傳遞字符串可能導(dǎo)致性能損失,因此不建議以字符串作為 第一個(gè)參數(shù)。 setTimeout("alert('Hello world!') ", 1000);//推薦的調(diào)用方式 setTimeout(function() {alert("Hello world!"); }, 1000);

第二個(gè)參數(shù)是一個(gè)表示等待多長(zhǎng)時(shí)間的毫秒數(shù),但經(jīng)過(guò)該時(shí)間后指定的代碼不一定會(huì)執(zhí)行。JavaScript 是一個(gè)單線程序的解釋器,因此一定時(shí)間內(nèi)只能執(zhí)行一段代碼。為了控制要執(zhí)行的代碼,就有一個(gè)JavaScript任務(wù)隊(duì)列。這些任務(wù)會(huì)按照將它們添加到隊(duì)列的順序執(zhí)行。setTimeout()的第二個(gè)參數(shù)告訴JavaScript再過(guò)多長(zhǎng)時(shí)間把當(dāng)前任務(wù)添加到隊(duì)列中。如果隊(duì)列是空的,那么添加的代碼會(huì)立即執(zhí)行;如果隊(duì)列不是空的,那么它就要等前面的代碼執(zhí)行完了以后再執(zhí)行。

調(diào)用 setTimeout()會(huì)返回一個(gè)數(shù)值 ID這個(gè)超時(shí)調(diào)用 ID 是計(jì)劃執(zhí)行代碼的唯一標(biāo)識(shí)符,可以通過(guò)它來(lái)取消超時(shí)調(diào)用。調(diào)用clearTimeout()方法并將相應(yīng)的超時(shí)調(diào)用ID作為參數(shù)傳遞給它。

//設(shè)置超時(shí)調(diào)用 var timeoutId = setTimeout(function() {alert("Hello world!"); }, 1000);//注意:把它取消 clearTimeout(timeoutId);

注意:超時(shí)調(diào)用的代碼都是在全局作用域中執(zhí)行的,因此函數(shù)中 this 的值在非嚴(yán)格模 式下指向 window 對(duì)象,在嚴(yán)格模式下是 undefined。

間歇調(diào)用setInterval()會(huì)按照指定的時(shí)間間隔重復(fù)執(zhí)行代碼,直至間歇調(diào)用被取消或者頁(yè)面被卸載。

//不建議傳遞字符串! setInterval ("alert('Hello world!') ", 10000);//推薦的調(diào)用方式 setInterval (function() {alert("Hello world!"); }, 10000);

可以使用 clearInterval()方法來(lái)取消間歇調(diào)用,和setTimeOut一樣,setInterval()也會(huì)返回一個(gè)間歇調(diào)用ID,該ID可用于在將來(lái)某個(gè)時(shí)刻取消間歇調(diào)用。

在開(kāi)發(fā)環(huán)境下,很少使用真正的間歇調(diào)用,原因是后一個(gè)間歇調(diào)用可能會(huì)在前一個(gè)間歇調(diào)用結(jié)束之前啟動(dòng)。 而使用超時(shí)調(diào)用,則完全可以避免這一點(diǎn)。所以,最好不要使用間歇調(diào)用。

3、系統(tǒng)對(duì)話框

alert()、confirm()和 prompt()

  • alert()向用戶顯示一個(gè)字符串。
  • confirm除了顯示確定按鈕外,還會(huì)顯示一個(gè)取消按鈕。為了確定用戶是單擊了 OK 還是 Cancel,可以檢查 confirm()方法返回的布爾值:true 表示單擊 了 OK,false 表示單擊了 Cancel 或單擊了右上角的 X 按鈕。 if (confirm("Are you sure?")) {alert("I'm so glad you're sure! "); } else {alert("I'm sorry to hear you're not sure. "); }
  • prompt()除了顯示 OK 和 Cancel 按鈕之外,還會(huì)顯示一個(gè)文本輸入域,以供用戶在其中輸入內(nèi)容。兩個(gè)參數(shù):要顯示給用戶的文本提示和文本輸入域的默認(rèn)值。如果用戶單擊了 OK 按鈕,則 prompt()返回文本輸入域的值;如果用戶單擊了 Cancel 或沒(méi)有單擊 OK 而是通過(guò)其他方式關(guān)閉了對(duì)話框,則該方法返回 null。 var result = prompt("What is your name? ", ""); if (result !== null) {alert("Welcome, " + result); }

還有兩個(gè)可以通過(guò) JavaScript 打開(kāi)的對(duì)話框,即“查找”和“打印”。這兩個(gè)對(duì)話框都是異步顯示 的,能夠?qū)⒖刂茩?quán)立即交還給腳本。

//顯示“打印”對(duì)話框 window.print(); //顯示“查找”對(duì)話框 window.find();

轉(zhuǎn)載于:https://www.cnblogs.com/lmjZone/p/8004787.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的BOM--window对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。