我有一个ASP.NET网站。主页面上有一个ASP.NET菜单。如果当前页面是登录页面,我想隐藏菜单。我的登录页面是Login.aspx。以下是我如何使菜单不可见/可见的代码:
var pathname = window.location.pathname;
if (pathname.toLowerCase().indexOf("login.aspx") > 0)
$('#mainmenu').hide();
else
$('#mainmenu').show();
但是当我在IIS上部署它时,url在第一次打开网站时不包含页面名称,因此菜单变得可见。在这种情况下如何确定当前页面?
答案 0 :(得分:2)
如果您想在javascript中执行此操作,可以按照以下方式执行此操作
var pathArray = window.location.pathname.split( '/' );
// assuming the url as http://www.example.com
var url_length = pathArray.length;
//if url is http://www.example.com, then url_length will have 3
//if url is http://www.example.com/login.aspx, then url_length will have 4
所以,
if( url_length==3 || pathArray[pathArray.length-1]=="login.aspx")
{
$('#mainmenu').hide();
}
else
{
$('#mainmenu').show();
}
希望这会对你有所帮助。
答案 1 :(得分:1)
您应该在服务器端IMO中执行此操作。无论如何,假设您的Web应用程序地址为http://yourdomain.com/app/
,并且您的登录页面是默认页面。然后,即使他没有输入http://yourdomain.com/app/login.aspx
,它也会被置换给用户,所以我们需要检查的是,如果我们的地址以yourdomain.com/app/
结尾。如果是这样,我们将隐藏菜单。
var pathname = window.location.pathname;
var appDomainEndding = 'yourdomain.com/app/'
if (pathname.toLowerCase().indexOf("login.aspx") > -1 ||
pathname.indexOf(appDomainEndding, pathname.length - appDomainEndding.length) > -1)
$('#mainmenu').hide();
else
$('#mainmenu').show();
答案 2 :(得分:1)
如果在登录屏幕上该网址没有更改,您唯一的选择是检查网页内容或设置Cookie:
使服务器设置为"pageIsLogin=true"
cookie,并检查document.cookie
是否具有该功能。
if(~document.cookie.indexOf("pageIsLogin=true")){
//Login-specific settings here.
}else...
(不要忘记在其他页面上取消设置该cookie)
或者,就像我的拳头建议一样,检查页面是否包含特定于登录的元素:
if(document.getElementById("loginSpecificField")){
//Login-specific settings here.
}else...
答案 3 :(得分:1)
在每个"页面" 上提供一个特殊变量。这是这种情况的经典之作。它通常用于允许脚本化的,包含的菜单系统区分任何页面和所有页面,并在此基础上提供功能,例如突出显示,删除链接等。它的工作方式是在每个页面上设置特定变量,然后由菜单系统进行测试,并据此采取行动。
同一个变量可以出于各种原因重复使用,例如:测试特定功能是否可用,包含页面元素等。