如果我正确理解您的问题,则您的功能不适用于random
链接,因为它有一个href
like http://mysite.com/random
,但服务器实际上会将您重定向到不同的页面,例如http://mysite.com/about-me
,因此活动页面的 url 与 href 不匹配随机按钮,它不会获得活动状态。
有人可能会争论您是否希望它获得活动状态,因为再次单击它不会(可能)将您带到同一页面,但这不是问题所在。
我可以找到解决此问题的方法。
服务器端:
而不是重定向到 ie。http://mysite.com/about-me
在随机函数中,您还可以重定向到http://mysite.com/about-me?random
. 通过添加此 get 变量,您不应更改链接的行为(除非您有一些非常严格的控制器,或者实际使用了该变量,但这不太可能)。然后,您可以使用 javascript 检测该变量是否存在于 url 中,然后激活random
按钮。
像这样的东西:
$(document).ready(function(){
var url = document.URL;
// check for random
if (url.indexOf('?random') >= 0) {
$('#topbar a.random').addClass('check');
}
// check all other
$('#topbar a:not(.random)').each(function(){
if($(this).attr('href').indexOf(url) >= 0){
$(this).addClass('check');
}
else{
$(this).addClass('nocheck');
};
});
});
cookie:
如果您没有访问服务器端随机控制器的权限,您可以使用 cookie 完全使用 javascript 来完成(我知道使变量通过页面请求持续存在的唯一方法)。
单击random
按钮时,您首先random
使用 javascript 将 cookie 设置为 true,然后再让实际链接执行此操作。进入页面后,您可以像我之前的选项一样进行类似的检查,但您可以检查 cookie 是否为 tre 而不是 url。如果是这样,请将其更改为 false(因此在下一页请求随机按钮将不再处于活动状态)并将random
按钮设置为活动状态。
因为我认为第一个解决方案是首选(cookie 只能作为最后的手段使用,它们会在每个页面请求上发送,这意味着额外的数据,并且您的用户可能禁用了 cookie,或者可能有禁止使用 cookie 的法律,因此该功能无法始终工作),我不会编写javascript。随意询问您是否更喜欢此解决方案并且需要进一步的帮助。