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