111
Stately主题后台有一个cookie提醒的功能,启用后发现无法关闭。
运行时浏览器报错Uncaught TypeError: expirationDate.toUTCString is not a function
我复制对应的JS代码给chatgpt,给出了解决办法。亲测可以解决。希望主题作者下个版本修复一下。
这个错误消息表明expirationDate.toUTCString
不是一个函数,这是因为expirationDate
在这段代码中被定义为一个数值(Number),而不是一个Date
对象。toUTCString
是Date
对象的一个方法,用于将日期转换为一个字符串。要修正这个错误,需要先将expirationDate
转换为一个Date
对象。
找到主题目录下hook目录里的stately_modal_cookie_notice.htm文件。
找到以下代码:
document.getElementById('cookie_accept').addEventListener('click', function () {
var expirationDate = (new Date().getTime()) + 6 * 30 * 24 * 60 * 60 * 1000;
document.cookie = 'cookie_policy=accept; expires=' + expirationDate.toUTCString() + '; path=/; domain=<?= $_SERVER["SERVER_NAME"]; ?>';
document.getElementById('StatelyCookieDialog').setAttribute('hidden', 'true');
});
修改为:
document.getElementById('cookie_accept').addEventListener('click', function () {
var expirationTime = new Date().getTime() + 6 * 30 * 24 * 60 * 60 * 1000; // 这是过期时间的毫秒数
var expirationDate = new Date(expirationTime); // 将毫秒数转换为Date对象
document.cookie = 'cookie_policy=accept; expires=' + expirationDate.toUTCString() + '; path=/; domain=www.xiuno.org';
document.getElementById('StatelyCookieDialog').setAttribute('hidden', 'true');
});