Javascript 谷歌灯塔的手风琴菜单问题;“注册卸载侦听器”;
我的网站上手风琴菜单的Javascript有问题。菜单工作正常,但最新版本的谷歌灯塔现在告诉我Javascript有缺陷。Lighthouse现在抱怨脚本“注册了一个卸载侦听器”。该报告接着说:“<代码>卸载\代码>事件不可靠地启动,监听它可以阻止浏览器优化,如前向高速缓存。请考虑使用<代码>页隐藏< /代码>或<代码> VistiBuryTechange 事件。 有人能提出解决这个问题的方法吗 页面如下: Javascript在这里:Javascript 谷歌灯塔的手风琴菜单问题;“注册卸载侦听器”;,javascript,lighthouse,Javascript,Lighthouse,我的网站上手风琴菜单的Javascript有问题。菜单工作正常,但最新版本的谷歌灯塔现在告诉我Javascript有缺陷。Lighthouse现在抱怨脚本“注册了一个卸载侦听器”。该报告接着说:“卸载\代码>事件不可靠地启动,监听它可以阻止浏览器优化,如前向高速缓存。请考虑使用页隐藏< /代码>或 VistiBuryTechange 事件。 有人能提出解决这个问题的方法吗 页面如下: Javascript在这里: (function(){ var accs = document.quer
(function(){
var accs = document.querySelectorAll('.accordion, .accordionSecond'),
cookiename = 'accordionpersiting_73561',
persisted = document.cookie.match('(^|;)\x20*' + cookiename + '=([^;]*)'),
persisting = {}, i = accs.length, toggleClass = accs[0] && accs[0].classList?
function(el, name){el.classList.toggle(name);} : function(el, name){
var classes = el.className.split(' '), i = classes.length, has = false;
while(--i > -1){if(classes[i] === name){has = true; classes.splice(i, 1); break;}}
!has && classes.push(name);
el.className = classes.join(' ');
};
if(persisted && (persisted = persisted[2])){
var p = persisted.split('.'), l = p.length;
while(--l > -1){persisting[p[l]] = true;}
}
function clickfunction(trans){
var panel = this.nextElementSibling;
toggleClass(this, 'active');
if(trans === false){toggleClass(panel, 'notransition');}
panel.style.maxHeight = panel.style.maxHeight? null : panel.scrollHeight + "px";
if(trans === false){panel.offsetHeight; toggleClass(panel, 'notransition');}
persisting[this.getAttribute('data-index')] = !!panel.style.maxHeight;
}
while(--i > -1){
accs[i].setAttribute('data-index', i);
accs[i].addEventListener('click', clickfunction, false);
persisting[i] && clickfunction.apply(accs[i], [false]);
}
window.addEventListener('unload', function(){
var pa = [], p;
for(p in persisting){persisting.hasOwnProperty(p) && persisting[p] && pa.push(p);}
document.cookie = cookiename + "=" + pa.join('.') + "; path=/";
}, false);
})();