摘要:我們可以通過屬性對該事件指定回調(diào)函數(shù)。出錯了由于歷史原因,的事件的回調(diào)函數(shù)不接受錯誤對象作為參數(shù),而是一共可以接受五個參數(shù),它們的含義依次如下。
1.window.requestIdleCallback()
window.requestIdleCallback(callback[, options])
callback參數(shù)是一個回調(diào)函數(shù)。該回調(diào)函數(shù)執(zhí)行時,系統(tǒng)會傳入一個IdleDeadline對象作為參數(shù)。IdleDeadline對象有一個didTimeout屬性(布爾值,表示是否為超時調(diào)用)和一個timeRemaining()方法(返回該空閑時段剩余的毫秒數(shù))
options參數(shù)是一個配置對象,目前只有timeout一個屬性,用來指定回調(diào)函數(shù)推遲執(zhí)行的最大毫秒數(shù)。該參數(shù)可選
requestIdleCallback(myNonEssentialWork);
function myNonEssentialWork(deadline) {
while (deadline.timeRemaining() > 0) {
doWorkIfNeeded();
}
}
上面代碼中,requestIdleCallback()用來執(zhí)行非關(guān)鍵任務myNonEssentialWork。該任務先確認本次空閑時段有剩余時間,然后才真正開始執(zhí)行任務
下面是指定timeout的例子。
requestIdleCallback(processPendingAnalyticsEvents, { timeout: 2000 });
上面代碼指定,processPendingAnalyticsEvents必須在未來2秒之內(nèi)執(zhí)行
如果由于超時導致回調(diào)函數(shù)執(zhí)行,則deadline.timeRemaining()返回0,deadline.didTimeout返回true。
如果多次執(zhí)行window.requestIdleCallback(),指定多個回調(diào)函數(shù),那么這些回調(diào)函數(shù)將排成一個隊列,按照先進先出的順序執(zhí)行。
事件window對象可以接收以下事件。
4.1load 事件和 onload 屬性load事件發(fā)生在文檔在瀏覽器窗口加載完畢時。window.onload屬性可以指定這個事件的回調(diào)函數(shù)
window.onload = function() {
var elements = document.getElementsByClassName("example");
for (var i = 0; i < elements.length; i++) {
var elt = elements[i]; // ...
}
};
上面代碼在網(wǎng)頁加載完畢后,獲取指定元素并進行處理。
瀏覽器腳本發(fā)生錯誤時,會觸發(fā)window對象的error事件。我們可以通過window.onerror屬性對該事件指定回調(diào)函數(shù)。
window.onerror = function (message, filename, lineno, colno, error) {
console.log("出錯了!--> %s", error.stack);
};
由于歷史原因,window的error事件的回調(diào)函數(shù)不接受錯誤對象作為參數(shù),而是一共可以接受五個參數(shù),它們的含義依次如下。
出錯信息
出錯腳本的網(wǎng)址
行號
列號
錯誤對象
老式瀏覽器只支持前三個參數(shù)
并不是所有的錯誤,都會觸發(fā) JavaScript 的error事件(即讓 JavaScript 報錯)。
一般來說,只有 JavaScript 腳本的錯誤,才會觸發(fā)這個事件,而像資源文件不存在之類的錯誤,都不會觸發(fā)。
下面是一個例子,如果整個頁面未捕獲錯誤超過3個,就顯示警告。
window.onerror = function(msg, url, line) {
if (onerror.num++ > onerror.max) {
alert("ERROR: " + msg + " " + url + ":" + line); return true;
}
}
onerror.max = 3;
onerror.num = 0;
需要注意的是,如果腳本網(wǎng)址與網(wǎng)頁網(wǎng)址不在同一個域(比如使用了 CDN),瀏覽器根本不會提供詳細的出錯信息,只會提示出錯,錯誤類型是“Script error.”,行號為0,其他信息都沒有。這是瀏覽器防止向外部腳本泄漏信息。
一個解決方法是在腳本所在的服務器,設置Access-Control-Allow-Origin的 HTTP 頭信息。
Access-Control-Allow-Origin: *
然后,在網(wǎng)頁的
上面代碼的crossorigin="anonymous"表示,讀取文件不需要身份信息,即不需要 cookie 和 HTTP 認證信息。如果設為crossorigin="use-credentials",就表示瀏覽器會上傳 cookie 和 HTTP 認證信息,同時還需要服務器端打開 HTTP 頭信息Access-Control-Allow-Credentials
除了具備元素節(jié)點都有的 GlobalEventHandlers 接口,window對象還具有以下的事件監(jiān)聽函數(shù)屬性。
window.onafterprint:afterprint事件的監(jiān)聽函數(shù)。
window.onbeforeprint:beforeprint事件的監(jiān)聽函數(shù)。
window.onbeforeunload:beforeunload事件的監(jiān)聽函數(shù)。
window.onhashchange:hashchange事件的監(jiān)聽函數(shù)。
window.onlanguagechange: languagechange的監(jiān)聽函數(shù)。
window.onmessage:message事件的監(jiān)聽函數(shù)。
window.onmessageerror:MessageError事件的監(jiān)聽函數(shù)。
window.onoffline:offline事件的監(jiān)聽函數(shù)。
window.ononline:online事件的監(jiān)聽函數(shù)。
window.onpagehide:pagehide事件的監(jiān)聽函數(shù)。
window.onpageshow:pageshow事件的監(jiān)聽函數(shù)。
window.onpopstate:popstate事件的監(jiān)聽函數(shù)。
window.onstorage:storage事件的監(jiān)聽函數(shù)。
window.onunhandledrejection:未處理的 Promise 對象的reject事件的監(jiān)聽函數(shù)。
window.onunload:unload事件的監(jiān)聽函數(shù)。
由于網(wǎng)頁可以使用iframe元素,嵌入其他網(wǎng)頁,因此一個網(wǎng)頁之中會形成多個窗口。如果子窗口之中又嵌入別的網(wǎng)頁,就會形成多級窗口。
各個窗口之中的腳本,可以引用其他窗口。瀏覽器提供了一些特殊變量,用來返回其他窗口。
top:頂層窗口,即最上層的那個窗口
parent:父窗口
self:當前窗口,即自身
與這些變量對應,瀏覽器還提供一些特殊的窗口名,供window.open()方法、標簽、
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106113.html
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創(chuàng)建了一個具體的對象。對象就是數(shù)據(jù),對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:原文地址對象和對象的區(qū)別對象和對象使用說明,需要的朋友可以參考下。同樣,對象也不能使用方法。學習開始就應當樹立正確的觀念,分清對象和對象之間的區(qū)別,之后學習就會輕松很多的。 原文地址:http://www.cnblogs.com/yellow... DOM對象和JQuery對象的區(qū)別 jQuery對象和DOM對象使用說明,需要的朋友可以參考下。jQuery對象和DOM對象第一次學習jQ...
摘要:對象的分類內(nèi)置對象原生對象就是語言預定義的對象,在標準定義,有解釋器引擎提供具體實現(xiàn)宿主對象指的是運行環(huán)境提供的對象。不過類型是中所有類型的父級所有類型的對象都可以使用的屬性和方法,可以通過的構(gòu)造函數(shù)來創(chuàng)建自定義對象。 對象 javaScript中的對象,和其它編程語言中的對象一樣,可以比照現(xiàn)實生活中的對象來理解。在JavaScript中,一個對象可以是一個單獨擁有屬性和類型的實體。和...
閱讀 2863·2023-04-25 20:06
閱讀 1484·2021-08-26 14:15
閱讀 2269·2021-08-12 13:27
閱讀 1807·2019-08-30 15:55
閱讀 3499·2019-08-30 13:20
閱讀 2854·2019-08-29 15:12
閱讀 3358·2019-08-29 15:06
閱讀 2888·2019-08-29 14:13