我有一个为该域写一个cookie的应用程序。这个cookie中有很多信息,但没有任何敏感信息。它存储的一个值是“DisplayFullName”,我想要检索它。
我已经搜索了一段时间,发现了许多代码示例,允许您读取cookie(其中包含所有值),但没有任何特别允许您读取特定值的代码。我确实找到了一个jquery示例,但看起来它正在循环遍历值。但是我的cms没有安装jquery,所以想用老式的方式来做。
这是我必须阅读cookie的代码,这似乎工作正常。我只需要阅读具体的价值。有人可以帮助或指出我正确的方向。
function getCookie(name)
{
var re = new RegExp(name + "=([^;]+)");
var value = re.exec(document.cookie);
return (value != null) ? unescape(value[1]) : null;
}
alert(getCookie("ecm"));
我想最终将DisplayFullName添加到iframe ID的src中,我将MyIframe称为参数。
答案 0 :(得分:1)
我给你的建议是根本不使用cookies。使用localStorage
界面,该界面具有多更加用户友好的语法。
例如:
localStorage['ecm'] = 'some value';
alert(localStorage['ecm']);
由于它只是一个Javascript对象,您还可以使用点符号:
localStorage.ecm = 'some value';
alert(localStorage.ecm);
这仅限于现代浏览器中。如果向后兼容性很重要,则可以使用各种垫片,例如: this one,它使所有浏览器都能在幕后使用老式cookie。
答案 1 :(得分:0)
这对你有用。它只是遍历cookie,寻找你传递的名字。
function getCookieByName(name) {
var cookies = document.cookie.split(";"),
yerCookie = null,
cookiePair;
for (var i=0; i < cookies.length; i++) {
cookiePair = cookies[i].split("=");
if (cookiePair[0].trim() === name) {
yerCookie = cookiePair.slice(1).join("=");
break;
}
}
return yerCookie;
}
或者你可以使用来自here:
的这个漂亮的功能function readCookie(name) {
var nameEQ = name + "=",
ca = document.cookie.split(';'),
i, c;
for (i=0; i < ca.length; i++) {
c = ca[i];
while (c.charAt(0)==' ') {
c = c.substring(1,c.length);
}
if (c.indexOf(nameEQ) == 0) {
return c.substring(nameEQ.length,c.length);
}
}
return null;
}
获得ecm cookie后,请使用以下内容解析:
function getECMCookieProperty(ecmCookie, prop) {
if (!ecmCookie) {
return undefined;
}
var props = ecmCookie.split("&"),
result = null,
propList;
for (var i=0;i<props.length;i++){
propList = props[i].split("=");
if (propList[0] === prop) {
result = unescape(propList[1]);
break;
}
}
return result;
}
使用这些,请执行:
var ecmCookie = getCookieByName("ecm");
var displayFullName = getECMCookieProperty(ecmCookie, "DisplayFullName");
alert(displayFullName)