現如今好多瀏覽器都有「隱身模式」,Safari 管這叫「Private Browing」,國內各種牌子的套殼瀏覽器叫「無痕瀏覽」。私以為從命名上來說,倒是國內更中文一些。 這種模式下瀏覽網頁踏雪無痕,雁過不留聲。具體來說,與正常模式的區別是瀏覽器不會儲存歷史記錄,沒有頁面快取,所有本地資料也都是臨時的,頁面關閉後無法還原。譬如本文下面要講到的 並不是說這種模式下絕對安全,伺服器仍然對使用者的瀏覽是有感知的。所以 IP 什麼的依然可以追蹤。 --------- LOG ---------
00:01:00 - 一位不具名使用者在零點零一分進行了訪問
00:02:00 - 一位不願透露姓名的使用者在零點零二分開啟了你丟棄在伺服器 `社會科學/東方藝術鑑賞/東瀛浮世繪` 中的資源 `ae2bx86.jpg` 從功能上來說,普通使用者大概鮮有人知道這一功能(產品情懷就這樣被使用者無視,PM 們默默淚目),而開發者則利用其乾淨的特點來開發除錯,排除程式之外的因素導致 bug 的可能。 因為所有本地資料都是臨時的,那麼問題來了,如果網頁程式碼中還使用了諸如 答案是肯定的,但只針對本次訪問。這個肯定只限於桌面瀏覽器。 而手機端則不然。 iOS 上 Safari private 模式下瀏覽器假裝支援 QUOTA_EXCEEDED_ERR:DOM Exception 22:An attempt was made to add something to storage... 考察下面的測試程式碼: <button class="setValue">SET</button>
<hr>
<button class="getValue">GET</button>
<script>
var q = document.querySelector;
document.querySelector('.setValue').onclick = function () {
try {
var time = new Date().getTime();
localStorage.setItem('time', time);
alert('set '+time);
} catch (error) {
alert(JSON.stringify(error));
}
}
document.querySelector('.getValue').onclick = function () {
var content = localStorage.getItem('time', new Date().getTime());
alert('got '+content);
}
</script> 我在頁面放了兩個按鈕,一個用於向瀏覽器儲存值,一個用於獲取。 下面是測試結果: 這表明在 iOS 上,不僅是 Safari 在隱私模式中不能使用 博主是穀粉,很早就入手了 Nexus。本著嚴謹的做事態度,那肯定也得拿來測試一下丫。而安卓機上的測試則讓人無法接受。 是的,安卓上面並沒有表現出假裝支援 回過頭來想,隱私模式主要的功能不就是讓使用者的資料不被追蹤嗎,如果能夠存取資料的話,反而沒那麼隱私了。從這點來說, 問題想當於回到了開發者手中,我們在開發過程中使用 下面是相容程式碼示例: function isLocalStorageSupport(){
try {
var isSupport = 'localStorage' in window && window['localStorage'] !== null;
if (isSupport) {
localStorage.setItem('__test', '1');
localStorage.removeItem('__test');
}
return isSupport;
} catch (e) {
return false;
}
} 為此,我們可以考慮提取一個輔助類來封裝 |
Safari Private 模式下 localStorage 的問題
相關文章
- Safari無痕模式下,storage被禁用問題模式
- Noir Dark Mode for Safari下載 Safari瀏覽器暗模式外掛瀏覽器模式
- 無痕模式下localstorage報錯解決方案模式
- react history模式下的白屏問題React模式
- 嚴格模式下this的指向問題模式
- Mac常見問題|Safari下載檔案沒有反應的解決方法Mac
- localStorage 跨域訪問跨域
- Safari暗模式新增外掛:Noir Dark Mode for Safari Mac版模式Mac
- iOS Safari閱讀模式研究iOS模式
- 蘋果手機下safari瀏覽器submit按鈕圓角問題解決方案蘋果瀏覽器MIT
- Observer模式的問題Server模式
- CLI模式下Yii2的log問題追蹤模式
- apache-tomcat模式下連線池的問題?ApacheTomcat模式
- 如何在Mac上執行修復Safari緩慢的問題?Mac
- 解決java web中safari瀏覽器下載後檔案中文亂碼問題JavaWeb瀏覽器
- private內聯網路卡效能不良導致的系統的問題
- RxSwift '_lock' is inaccessible due to 'private' protection level in DisposeBag問題Swift
- iOS Safari閱讀模式分析過程iOS模式
- Python 訪問限制 private publicPython
- IOS safari瀏覽器登陸時Cookie無法儲存的問題iOS瀏覽器Cookie
- 單例模式和多例模式問題得一個問題!單例模式
- 關於橋模式的問題模式
- 修復UEFI模式下Manjaro Linux啟動問題模式JARLinux
- 設計模式之間互為陷阱的問題!為模式而模式的疑問!設計模式
- 如何在Safari Mac中啟用暗黑模式?Mac模式
- Safari瀏覽器夜間模式外掛Dark Reader for Safari 支援big sur瀏覽器模式
- 完美解決ios10及以上Safari無法禁止縮放的問題iOS
- 【Redis叢集原理專題】分析一下相關的Redis叢集模式下的腦裂問題!Redis模式
- public, private, protected 訪問許可權訪問許可權
- 字串匹配模式問題字串匹配模式
- 下載的 Laravel ?問題Laravel
- Myeclipse下的問題Eclipse
- 修改noarchivelog模式遇到的問題Hive模式
- 請教IoC模式中的問題模式
- Jive中的設計模式問題設計模式
- 解決:在阻止快取的inspect模式下無法drawImage()的問題快取模式
- localStorage、sessionStorage、Cookie的SessionCookie
- 解決Vue cli3 history模式下打包出現的404問題Vue模式