摘要:間歇調(diào)用和超時(shí)調(diào)用超時(shí)調(diào)用表示在指定時(shí)間后執(zhí)行代碼要執(zhí)行的代碼,以毫秒表示的時(shí)間超時(shí)調(diào)用注意經(jīng)過一定時(shí)間后改代碼也不一定執(zhí)行,因?yàn)槭且粋€(gè)單線程解釋器,任務(wù)會(huì)按照隊(duì)列執(zhí)行,經(jīng)過該時(shí)間將任務(wù)添加到隊(duì)列中。
1、window對(duì)象
BOM的核心對(duì)象是window,它表示瀏覽器的一個(gè)實(shí)例。window既是通過Javascript訪問瀏覽器窗口的一個(gè)接口,又是ECMAScript規(guī)定的Global對(duì)象。
1.1 全局作用域所有在全局作用域中聲明的變量、函數(shù)都會(huì)變成window對(duì)象的屬性和方法;
(1) 定義全局變量與在window對(duì)象上直接定義屬性的區(qū)別在于:全局變量不能通過delect操作符刪除,而直接在window對(duì)象上定義的屬性可以。
var age = 29; window.color = "red"; delect window.age; //報(bào)錯(cuò) delect window.color; //true
原因在于使用var語句添加的window屬性有一個(gè)名為[[Configurable]]的特性,這個(gè)特性的值被設(shè)置為false,因此這樣定義的屬性不可以通過delectable操作符刪除。
(2) 嘗試訪問未聲明的變量會(huì)拋出錯(cuò)誤,但是通過查詢window對(duì)象,可以知道某個(gè)可能未聲明的變量是否存在。
var newValue = olaValue; //這里會(huì)報(bào)錯(cuò),因?yàn)閛ldValue未定義 var newValue = window.oldValue; //這里不會(huì)報(bào)錯(cuò),因?yàn)檫@是一次屬性查詢1.2 窗口關(guān)系及框架
如果頁面中包含框架,則每個(gè)框架都擁有自己的window對(duì)象,并且保存在frames集合中。在frames集合中,可以通過數(shù)值索引(從0開始,從左至右,從上到下)或者框架名稱來訪問相應(yīng)的window對(duì)象。每個(gè)window對(duì)象都有一個(gè)name屬性,其中包含框架的名稱。
top對(duì)象始終指向最高(最外)層的框架,也就是瀏覽器窗口;
parent(父)對(duì)象始終指向當(dāng)前框架的直接上層框架;
[在某些情況下,parent有可能等于top;但在沒有框架的情況下,parent一定等于top(此時(shí)它們都等于window)]
self對(duì)象始終指向window;
所有這些對(duì)象都是window對(duì)象的屬性,可以通過window.parent、window.top等形式來訪問;
1.3 窗口位置screenLeft屬性、screenTop屬性:分別用于表示窗口相對(duì)于屏幕左邊和上邊的位置;(IE、Safiari、Opera、Chrome)
screenX屬性、screenY屬性:分別用于表示窗口相對(duì)于屏幕左邊和上邊的位置;(Firefox、Safari、Chrome)
moveTo()方法、moveBy()方法:將窗口精確地移動(dòng)到一個(gè)新位置,moveTo()接收的是新位置的x和y坐標(biāo)值,moveBy()接收的是在水平和垂直方向上移動(dòng)的像素?cái)?shù)。
window.moveBy(0,100); //將窗口向下移動(dòng)100像素 window.moveTo(200,300); //將窗口移動(dòng)到(200,300)1.4 窗口大小
(1)四個(gè)屬性:innerWidth、innerHeight、outerWidth、outerHeight
在IE9+、Safari和Firefox中,outerWidth和outerHeight返回瀏覽器窗口本身的尺寸(無論是從最外層的window對(duì)象還是從某個(gè)框架訪問);
在Opera中,outerWidth和outerHeight表示頁面視圖容器(單個(gè)標(biāo)簽頁對(duì)應(yīng)的瀏覽器窗口)的大小;innerWidth和innerHeight則表示該容器中頁面視圖區(qū)的大小(減去邊框?qū)挾龋?/p>
在Chrome中,outerWidth、outerHeight和innerWidth、innerHeight返回相同的值,即視口大小而非瀏覽器窗口大小
(2)取得視口大小
在IE、Safari、Firefox、Safari、Opera和Chrome中,document.documentElement.clientWidth document.documentElement.clientHeight中保存了頁面視口的信息;
在IE6中,這些屬性必須在標(biāo)準(zhǔn)模式下有效;如果是混雜模式,則需通過document.body.clientWidth和document.body.clientHeight取得相同信息;
在混雜模式的Chrome中,均可使用。例:無法確定瀏覽器窗口本身大小,但卻可取得頁面視口的大小
var pageWidth=window.innerWidth, pageHeight=window.innerHeight; if(typeof pageWidth !="number"){ if(document.compatMode=="CSS1Compat"){ //通過檢查document.compatMode來確定頁面是否處于標(biāo)準(zhǔn)模式 pageWidth=document.documentElement.clientWidth; pageHeight=document.documentElement.clientHeight } else{ pageWidth=document.body.clientWidth; pageHeight=document.body.clientHeight; } }
(3)調(diào)整瀏覽器窗口大小
resizeTo():接收兩個(gè)參數(shù),接收瀏覽器窗口的新寬度和新高度
resizeBy():接收兩個(gè)參數(shù),接收新窗口與原窗口的寬度和高度之差
window.resiazeTo(100,100); //調(diào)整到100*100 window.resizeBy(100,50); //調(diào)整到100*1501.5 導(dǎo)航和打開窗口
window.open() 這個(gè)方法通??梢越邮账膫€(gè)參數(shù):要加載的URL、窗口目標(biāo)、一個(gè)特性字符串以及一個(gè)表示新頁面是否取代瀏覽器歷史記錄中當(dāng)前加載頁面的布爾值。
通常只需傳遞第一個(gè)參數(shù),最后一個(gè)參數(shù)只在不打開窗新窗口的情況下使用;
如果傳遞了第二個(gè)參數(shù),而且該參數(shù)是已有窗口或框架的名稱,那么就會(huì)在具有該名稱的窗口或框架中加載第一個(gè)參數(shù)指定的URL;第二個(gè)參數(shù)也可以是任何一個(gè)特殊的窗口名稱,如_self、_parent、_top、_blank;
如果給window.open()傳遞的第二個(gè)參數(shù)并不是一個(gè)已經(jīng)存在的窗口或框架,那么該方法就會(huì)根據(jù)在第三個(gè)參數(shù)位置上傳入的字符串創(chuàng)建一個(gè)新窗口或新標(biāo)簽頁。
調(diào)用close()方法還可以關(guān)閉新打開的窗口,這個(gè)方法僅適用于通過window.open()打開的彈出窗口;
新創(chuàng)建的window對(duì)象有一個(gè)opener屬性,其中保存著打開它的原始窗口對(duì)象。這個(gè)屬性只在彈出窗口中的最外層window對(duì)象(top)中有定義。將新創(chuàng)建的變遷也的opener屬性設(shè)置為null,即表示在多帶帶的進(jìn)程中運(yùn)行新標(biāo)簽頁。
超時(shí)調(diào)用:表示在指定時(shí)間后執(zhí)行代碼 setTimeout(要執(zhí)行的代碼,以毫秒表示的時(shí)間)、clearTimeout(超時(shí)調(diào)用ID)
注意:經(jīng)過一定時(shí)間后改代碼也不一定執(zhí)行,因?yàn)镴S是一個(gè)單線程解釋器,任務(wù)會(huì)按照隊(duì)列執(zhí)行,經(jīng)過該時(shí)間將任務(wù)添加到隊(duì)列中。如果隊(duì)列為空,添加的代碼就會(huì)立即執(zhí)行,否則就要等前面的代碼執(zhí)行完了以后再執(zhí)行
間歇調(diào)用:表示每隔指定的時(shí)間就執(zhí)行一次代碼 setINterval(要執(zhí)行的代碼,以毫秒表示的時(shí)間)、clearInterval(間歇調(diào)用ID)
//設(shè)置超時(shí)調(diào)用 var timeoutId = setTimeout(function() { alert("Hello World"); },1000); //取消 clearTimeout(timeoutId); //設(shè)置間歇調(diào)用 var timeintervalId = setTimeout(function() { alert("Hello World"); },1000); //取消 clearTimeout(timeintervalId);
在開發(fā)環(huán)境下,很少使用真正的間隙調(diào)用,原因是后一個(gè)間歇調(diào)用可能會(huì)在前一個(gè)間歇調(diào)用結(jié)束之前啟動(dòng)。因此一般認(rèn)為使用超時(shí)調(diào)用來模擬間歇調(diào)用是一種最佳模式。如下,是采用超時(shí)調(diào)用模擬一個(gè)間歇調(diào)用。
//間歇調(diào)用 var num = 0; var max = 10; var intervalId = null; function incrementNumber() { num++; //如果執(zhí)行次數(shù)達(dá)到了max設(shè)定的值,則取消后續(xù)尚未執(zhí)行的調(diào)用 if(num == max) { clearInterval(intervalId); alert("Done"); } } intervalId = setInterval(incrementNumber, 500); //超時(shí)調(diào)用模擬間歇調(diào)用 var num = 0; var max = 10; var intervalId = null; function incrementNumber() { num++; //如果執(zhí)行次數(shù)達(dá)到了max設(shè)定的值,則取消后續(xù)尚未執(zhí)行的調(diào)用 if(num < max) { setTimeout(incrementNumber, 500); }else{ alert("Done"); } } setTimeout(incrementNumber, 500);1.7 系統(tǒng)對(duì)話框
alert(); confirm(); prompt(要顯示給用戶的提示,文本輸入域的默認(rèn)值); //顯示“打印”對(duì)話框 window.print(); //顯示“查找”對(duì)話框 window.find();2、location對(duì)象 2.1 查詢字符串參數(shù)
function getQueryStringArgs() { //取得查詢字符串并去掉開頭的問號(hào) var qs = (location.search.length>0 ? location.search.substring(1) : ""), //保存數(shù)據(jù)的對(duì)象 args = {}, //取得每一項(xiàng) items = qs.length ? qs.split("&") : [], item = null, name = null, value = null, //在for循環(huán)中使用 i = 0, len = items.length; //逐個(gè)將每一項(xiàng)添加到agrs對(duì)象中去 for(i=0; i2.2 位置操作 P208
replace(要導(dǎo)航到的URL),在調(diào)用replace()方法之后,用戶不能會(huì)發(fā)哦前一個(gè)界面;
3、navigator對(duì)象
reload()作用是重新加載當(dāng)前顯示的界面。
location.reload(); //重新加載(有可能從緩存中加載)
location.reload(true); //重新加載(從服務(wù)器重新加載)Navigator 對(duì)象包含有關(guān)瀏覽器的信息。通常用于檢測(cè)顯示網(wǎng)頁的瀏覽器類型。
4、screen對(duì)象Screen 對(duì)象包含有關(guān)客戶端顯示屏幕的信息。
5、history對(duì)象History 對(duì)象包含用戶(在瀏覽器窗口中)訪問過的 URL。History 對(duì)象是 window 對(duì)象的一部分,可通過 window.history 屬性對(duì)其進(jìn)行訪問。
length屬性,go()、back()、forward()方法
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106006.html
摘要:寫在前面本文記錄的是我不熟悉或者我認(rèn)為值得注意的地方,并不是書上知識(shí)點(diǎn)的概括。再就是畫圖這種。與瀏覽器沒有依賴關(guān)系。 寫在前面 本文記錄的是我不熟悉或者我認(rèn)為值得注意的地方,并不是書上知識(shí)點(diǎn)的概括。 第1章 JavaScript簡(jiǎn)介 JS誕生時(shí)間:1995年(好年輕...) JS誕生背景:表單數(shù)據(jù)合法性由服務(wù)端驗(yàn)證的用戶體驗(yàn)不好,希望能在客戶端進(jìn)行驗(yàn)證 JS現(xiàn)在用處:如果沒有...
摘要:僅限數(shù)值表示新窗口的高度。此時(shí)只要檢查這個(gè)返回值就可以確定彈窗是否被屏蔽。返回一個(gè)布爾值,代表用戶選擇還是返回一個(gè)字符串或者,輸入了值并確定,返回字符串,其他方法關(guān)閉返回打印查找對(duì)話框。 ECMAScript是JavaScript的核心,但如果要在Web中使用JavaScript,那么BOM(瀏覽器對(duì)象模型)則無疑才是真正的核心。 W3C為了把瀏覽器中JavaScript最基本的部分...
摘要:對(duì)象的核心對(duì)象是,它表示瀏覽器的一個(gè)實(shí)例。而和則表示該容器中頁面視圖區(qū)的大小。在中,與返回相同的值,即視口大小而非瀏覽器窗口大小。第三個(gè)參數(shù)是一個(gè)逗號(hào)分隔的設(shè)置字符串,表示在新窗口中都顯示哪些特性。這應(yīng)該是用戶打開窗口后的第一個(gè)頁面 BOM window對(duì)象 BOM的核心對(duì)象是window,它表示瀏覽器的一個(gè)實(shí)例。在瀏覽器中,window對(duì)象有雙重角色,它既是通過JavaScript訪...
摘要:表示應(yīng)該立即下載腳本,但不應(yīng)妨礙頁面中的其他操作可選。表示通過屬性指定的代碼的字符集。表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行。實(shí)際上,服務(wù)器在傳送文件時(shí)使用的類型通常是,但在中設(shè)置這個(gè)值卻可能導(dǎo)致腳本被忽略。 第1章 JavaScript 簡(jiǎn)介 雖然JavaScript和ECMAScript通常被人們用來表達(dá)相同的含義,但JavaScript的含義比ECMA-262要多得多...
摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長(zhǎng)時(shí)間,如果你一本書一本書看的話,的確要用很長(zhǎng)時(shí)間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識(shí)點(diǎn)合并,手動(dòng)整理了這個(gè)知識(shí)樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...
閱讀 1162·2021-09-22 15:43
閱讀 2358·2021-09-22 15:32
閱讀 4530·2021-09-22 15:11
閱讀 2227·2019-08-30 15:55
閱讀 2599·2019-08-30 15:54
閱讀 995·2019-08-30 15:44
閱讀 1107·2019-08-29 13:26
閱讀 803·2019-08-29 12:54