色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 保持前臺

謝彥文1年前7瀏覽0評論

在現代的網頁應用中,我們經常需要用到JavaScript來為我們的網頁增添一些互動和動態效果。但是當我們需要對網頁進行編輯或更改時,我們很有可能需要重新加載一次,這樣就會導致我們之前做的一些操作、渲染或者狀態信息都消失了。那么怎么樣才能讓JavaScript保持前臺呢?

第一種方式是使用Local Storage。

if(localStorage.getItem('data') !== null) {
var data = JSON.parse(localStorage.getItem('data'));
// 在這里恢復數據的狀態
}
window.addEventListener('beforeunload', function() {
// 在這里將數據序列化然后保存至 local storage
localStorage.setItem('data', JSON.stringify(data));
});

這樣我們就可以在網頁關閉后重新打開頁面,或者在瀏覽器的其他頁面間切換之后,還原之前的操作和狀態信息。

第二種方式是使用Cookie。

if(document.cookie != "") {
var cookies = document.cookie.split(";");
for(var i = 0; i< cookies.length; i++) {
var name = cookies[i].split("=")[0].trim();
var value = cookies[i].split("=")[1];
// 在這里恢復名為"name" 的 cookie 值
}
}
window.addEventListener('beforeunload', function() {
// 在這里保存名為 "name" 的 cookie 值
document.cookie = "name=xxx";
});

與Local Storage不同的是,Cookie數據在每次HTTP請求時會通過HTTP頭部發送給服務器端,因此保存在Cookie中的數據應該是比較小的,例如表單的數據、用戶名、購物車信息等等。相對于Local Storage而言,Cookie的優勢是可以跨頁面讀取,比較方便實現多個站點之間共享數據的需求。

第三種方式是使用Fragment Identifier。

var isRestored = false;
window.addEventListener('load', function() {
if(window.location.hash != "" && !isRestored) {
var hash = window.location.hash.substring(1);
// 在這里根據 hash 值恢復數據狀態
isRestored = true;
}
});
window.addEventListener('beforeunload', function() {
// 在這里將數據序列化加入 hash 值中
window.location.hash = '#' + data;
});

Fragment Identifier一般用于在URL中作為跳轉的標記,例如當我們在論壇中對某個帖子點贊時,可以自動返回到之前的位置。在上面的代碼中,我們通過監聽onload事件和beforeunload事件,來使頁面在刷新或者重載的時候始終保存之前的狀態。

以上三種方式中,Local Storage應該是使用最廣泛的一種方式了,尤其對于需要處理大量數據狀態的應用而言。但是在一些場景下,我們也可以考慮選擇Cookie或者Fragment Identifier來達到保持前臺的效果。