有些時候我們需要在專案中判斷使用者是否在瀏覽當前頁面,或者當前頁面是否處於啟用狀態。然後再進行相關的操作。瀏覽器中可通過window物件的onblur、onfocus判斷,或者document的hidden屬性判斷。1、window.onblur & window.onfocus
關於是否失焦點,瀏覽器物件有onfocus 和 onblur事件可以監聽。但是觸發這兩個事件的前提是頁面之前是focus過的。也就是說頁面剛剛渲染完,使用者在沒有頁面上任何操作時,頁面是不會正常監聽這兩個事件的;或者頁面在開啟狀態下,但是觸發了onblur之後並無頁面操作的情況下也不會正常監聽這兩個事件。直到,使用者操作頁面觸發focus,之後離開頁面才會觸發blur,再次點選到當前頁面時才會觸發focus,如此反覆都會觸發相應的事件。
觸發onblur事件的情況:
1、在chrome瀏覽器下,點選console面板也會觸發blur事件,同樣的,前提是之前是focus的狀態。
2、頁面最小化;
3、瀏覽器切換tab頁面;
4、頁面中的任何彈窗;
5、focus狀態下切換到其他應用
觸發onfocus的情況:
1、使用者存在頁面操作(包括頁面中js指令碼執行。如頁面載入完無js執行,使用者無操作,則不會觸發 );
2、onblur事件觸發前提下,頁面最大化;
3、onblur事件觸發前提下,頁面 從其他tab頁切換回當前頁面;
2、document.hidden
hidden是document的屬性,可以判斷頁面是否顯示的是當前的頁面。visibilitychange事件就是觸發頁面可見的事件。當然不同的瀏覽器核心記得要加字首。表示頁面處於非啟用狀態,反之,處於啟用狀態。
hidden屬性為true的此類情況有:
1、 頁面最小化
2、頁面在後台執行
3、切換tab欄到其他頁面
hidden屬性為false的情況
1、當前頁面正常顯示,包括被其他應用擋住的情況。
visibilitychange事件的相容性寫法
var hiddenproperty = 'hidden' in document ? 'hidden' :
'webkithidden' in document ? 'webkithidden' :
'mozhidden' in document ? 'mozhidden' :
null;
var visibilitychangeevent = hiddenproperty.replace(/hidden/i, 'visibilitychange');
var onvisibilitychange = function()else
}document.addeventlistener(visibilitychangeevent, onvisibilitychange);
這兩種判斷方法最大的不同就是在頁面被其他應用覆蓋的情況下,onblur是會觸發的,但是visibilitychange不會觸發。如果只是判斷頁面是否是開啟狀態的話,visibilitychange事件是比較合適的。
JS 判斷當前瀏覽器是否為IE
除ie外都可識別 function isie 這個方法,edge瀏覽器中為false,ie11中為false function isie 這個方法,edge瀏覽器中為false,ie11為true function ieversion else if fieversion 8 else if fie...
js判斷當前瀏覽器頁面是否切換
公司做mifi裝置,ui介面很多資訊需要1s鐘不斷非同步請求更新資訊,如果同時開啟多個瀏覽器或者多個當前介面,裝置1s鍾會收到很多個請求,由於裝置本身記憶體限制,會導致響應速度過慢,且會造成裝置重啟等。所以需要我們只對停在當前介面的頁面請求進行處理,其他切換掉的介面不再下發請求。頁籤切換或觸發瀏覽器...
js判斷使用者是否在操作網頁
方法一 通過事件來判斷。window.onload function funobj.timeuserfun function time eventfun function var testuser setinterval objtime.time,1000 var body document.que...