Javascript Cookie和firefox的怪异行为
编辑:这只发生在firefox中,在chrome中效果很好 编辑2:由于显然没有解决方案(当存在其他cookie时sessionid会中断),我决定改用localstorage(这也是一种更好的方法) 我的网站(由django支持的网站)上有一个音频播放器,我想在cookie中存储当前时间、源和状态(是否播放)。因此,当您在播放音乐时刷新页面时,它将在您停止的位置继续。我设置了一个计时器,每秒更新cookieJavascript Cookie和firefox的怪异行为,javascript,django,cookies,Javascript,Django,Cookies,编辑:这只发生在firefox中,在chrome中效果很好 编辑2:由于显然没有解决方案(当存在其他cookie时sessionid会中断),我决定改用localstorage(这也是一种更好的方法) 我的网站(由django支持的网站)上有一个音频播放器,我想在cookie中存储当前时间、源和状态(是否播放)。因此,当您在播放音乐时刷新页面时,它将在您停止的位置继续。我设置了一个计时器,每秒更新cookie跟踪时间。然而,它是有效的: 当你第二次尝试登录网站时,当音频播放时,它不会让你登录。它
跟踪时间。然而,它是有效的:
当你第二次尝试登录网站时,当音频播放时,它不会让你登录。它在我的控制台中说登录发生了,但firefox似乎没有存储会话。当我禁用编写cookies的脚本时,它会再次工作
以下是证据:
这里到底发生了什么事?我没有收到任何错误,只是不起作用
代码:
这里的代码段创建、读取和删除cookie
/** Cookies **/
function createCookie(name, value, days) {
'use strict';
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
} else var expires = "";
document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var 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;
}
function eraseCookie(name) {
createCookie(name, "", -1);
}
及
创建包含AudioTrack对象(源、名称等)的cookie
什么是真/假栏?是HTTP还是安全?@gabykag.Petrioli我已经添加了代码片段。@AdrianLynch共谋者在我所附的屏幕截图中。@AdrianLynch你看过了吗?正确/错误栏是什么?它是HTTP还是安全的?@gabykag.Petrioli我已经添加了代码片段。@AdrianLynch共谋者在我所附的屏幕截图中。@AdrianLynch你看过和吗
// Cookie? //
function audioCookie() {
'use strict';
var track, track_time, track_state;
track = readCookie('track');
track_time = readCookie('track_time');
track_state = readCookie('track_state');
if (track !== null) {
track = JSON.parse(track);
audioCurrent = new AudioTrack(track.src, track.artist, track.title, track.genre, track.type);
audioCurrent.setSrc();
if (track_state === '1') {
audioCurrent.play();
}
setTimeout(function () {
audioCurrent.time(track_time);
audioSetProperties();
audioViewUpdate();
audioElementUpdatePlayButton();
audioAnalyserInitialize();
}, 250);
}
}
var audioTimeUpdate = function () {
'use strict';
if (audioSource.paused === false) {
audioSetProperties();
createCookie('track_time', audioSource.currentTime, 360);
setTimeout(function () {
audioTimeUpdate();
}, 500);
}
};
// Play the track that is being viewed
var audioPlayFromView = function () {
'use strict';
audioCurrent = audioFromView;
var audioCurrentString = JSON.stringify(audioCurrent);
createCookie('track', audioCurrentString, 360);
audioCurrent.setSrc();
audioCurrent.play();
if (analyserInitialized === true) {
source.disconnect();
source = context.createMediaElementSource(audioSource);
}
audioViewUpdate();
};