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