我有一个功能,可以检查网址是否每100毫秒包含任何导航href ,如果有,则会添加某些元素活动。
代码:
var checkActive = function(){
var path = window.location.pathname,
path = decodeURI(path),
path = path.replace(/[\/]/, "");
if ( window.location.pathname.indexOf(path) > -1 ) {
$('.navigation .nav li a[href*="' + path + '"]').parent().addClass('active');
$('.navigation .nav li a:not([href*="'+path+'"])').parent().removeClass('active');
}
(function loopingFunction() {
checkActive();
setTimeout(loopingFunction, 100);
})();
此检查每100毫秒会影响其他用户使用较弱PC的用户的性能吗?
Ps:我使用此方法,因为我使用 pushState,statechange和.load() 来更新我的内容,因此页面本身不会刷新
答案 0 :(得分:1)
不太可能造成任何麻烦。这是每秒10次的小检查。但是,只需使用location.hash
并将该(未解析的)值与您使用的最后一个值进行比较,就可以减少工作量:
var lastHash = String(location);
var checkActive = function(){
if (lastHash === String(location)) {
return;
}
// ...do work...
};
但是,您只需要在过时的浏览器上使用它。在任何模糊的现代浏览器上,您可以使用hashchange
事件代替,您可以轻松检测它是否受支持:
if (typeof window.onhashchange !== "undefined") {
// Vaguely modern, use the hashchange event
} else {
// Obsolete, use a workaround
}
(对不起,你不仅仅是做哈希片段。)