我需要验证Web Storage API是否受支持并可用(由于安全问题,它可能已被禁用)。
因此,我认为检查是否定义了sessionStorage或localStorage类型就足够了:
if (typeof sessionStorage != 'undefined')
{
alert('sessionStorage available');
}
else
{
alert('sessionStorage not available');
}
Run Code Online (Sandbox Code Playgroud)
但是,我想知道这种类型是否可能存在,但无论如何我都无法使用Web Storage API。
备注:我知道,如果禁用cookie并访问sessionStorage或localStorage,Firefox将引发安全错误。
任何对象都可以存储在DOM存储中吗?
当我执行以下操作时:
// where val is a string and response is an array of objects.
sessionStorage.results= { val: response };
Run Code Online (Sandbox Code Playgroud)
当我检查sessionStorage.results我得到的价值"[object Object]"
我可以存储这样的对象吗?或者Storage只存储字符串?
我有一个表格,我可以在其中选中一个复选框,它将记录该行中的所有内容。页面上有一些搜索功能和其他按钮,所以我想使用会话存储来保持所有选中、选中、刷新过程中的复选框,直到页面关闭。我从我发现的一个例子中得到了一些东西,但它似乎没有用。我怎么能解决这个问题?
带有复选框的表格列/行的 HTML:
<td class="ui-widget-content"><input type="checkbox" class="check" name="check" id="checkid"></td>
Run Code Online (Sandbox Code Playgroud)
JavaScript:
$(function(){
var test = sessionStorage.input === 'false'? true: false;
$('input').prop('checked', test || false);
$('input').on('change', function() {
sessionStorage.input = $(this).is(':checked');
console.log($(this).is(':checked'));
});
});
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
var a=sessionStorage.getItem("Token");
alert(a==null);
Run Code Online (Sandbox Code Playgroud)
返回的值是null(如果我alert(a)显示null).问题是alert(a==null)firefox上的显示为TRUE,safari和chrome上的显示为FALSE.WTH?我尝试a===null过同样的结果以及!a.
我做错了什么或者我不知道什么?
谢谢你的帮助.
如何将数组的内容存储在 cookie、会话或本地存储中,然后再次恢复或推送到数组中以正常使用。它应该设置为特定时间,并且在该时间之后,它不应该恢复值。
编辑 我尝试了此方法来获取本地存储和会话存储以及数组所需的cookie
var date = new Date();
var minutes = 30;
date.setTime(date.getTime() + (minutes * 60 * 1000));
$.cookie("example", "foo", { expires: date });
Run Code Online (Sandbox Code Playgroud) 我有一个非常奇怪的问题.我有一个if语句,如下所示:
$rootScope.changeView = function(view){
$location.path(view); // path not hash
};
$rootScope.$on('$routeChangeStart', function (event, next) {
console.log(next.requireLogin + " " + LoginService.getUserLoggedIn());
console.log(next.requireLogin && !LoginService.getUserLoggedIn());
if(next.requireLogin && !LoginService.getUserLoggedIn()) {
console.log("No access to panel: not logged in.");
alert("You need to be logged in as an administrator to see this page!");
event.preventDefault();
$timeout(function () {
$rootScope.changeView("/");
}, 500);
}
});
Run Code Online (Sandbox Code Playgroud)
LoginServer.getUserLoggedIn和setUserLoggedIn是这样的:
this.setUserLoggedIn = function(value){
sessionStorage.userIsLoggedIn = value;
};
this.getUserLoggedIn = function() {
return sessionStorage.userIsLoggedIn;
};
Run Code Online (Sandbox Code Playgroud)
问题很简单.永远不会调用If语句,即使next.requireLogin为true且LoginService.getUserLoggedIn()为false.控制台中的输出如下:
true false
false
Run Code Online (Sandbox Code Playgroud)
显然"next.requireLogin &&!LoginService.getUserLoggedIn()"的计算结果为false,但两者都是正确的值?如果有帮助,在Chrome控制台中,带有"false"的最后一行会突出显示为紫色.
有谁知道什么是错的?
我正在使用 NextJS 跟踪示例代码 redux 工具包(计数器)并尝试将状态存储到 sessionStorage,它按预期运行,但控制台发出警告
"Warning: Text content did not match. Server: "0" Client: "25"
这是我的 redux 商店:
import counterReducer from "./counterSlice";
const initValue = () => {
let value = 0;
if (typeof window !== "undefined") {
if (sessionStorage.getItem("counter")) {
value = sessionStorage.getItem("counter");
}
}
return parseInt(value);
};
const preloadedState = {
counter: {
value: initValue(),
},
};
export default configureStore({
reducer: {
counter: counterReducer,
},
preloadedState,
});
Run Code Online (Sandbox Code Playgroud)
这是我的页面代码:
import { useEffect, useState } from "react";
import { …Run Code Online (Sandbox Code Playgroud) javascript ×6
jquery ×2
angularjs ×1
checkbox ×1
cookies ×1
dom ×1
html ×1
html5 ×1
if-statement ×1
next.js ×1
reactjs ×1
redux ×1
web-storage ×1