我想知道为什么我需要两次调用setPageFromHash()方法?我尝试在debugger上查看,并且addeventlistener内部的调用将我带到了最后一行-对setPageFromHash的调用。调用该方法还不够吗?我以为addEventListener内部的调用会将调试器带到第12行的函数调用。
var main = document.querySelector('main');
function showPage(name) { var html = document.getElementById(`t-${name}`).innerHTML; main.innerHTML = html; }
window.addEventListener('hashchange', function() { setPageFromHash(); });
function setPageFromHash() {
var hash = window.location.hash.substr(1);
if (hash === 'about') {
showPage('about'); }
else {
showPage('home');
}
}
setPageFromHash();
您无需在addEventListener参数内调用函数。您可以只传递要在事件中调用的函数的名称:
window.addEventListener('hashchange', setPageFromHash);