如果该页面是Web应用程序的默认页面,如果URL中没有显示当前页面名称,该如何获取?

时间:2012-12-13 08:43:10

标签: javascript asp.net url

我有一个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在第一次打开网站时不包含页面名称,因此菜单变得可见。在这种情况下如何确定当前页面?

4 个答案:

答案 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)

在每个"页面" 上提供一个特殊变量。这是这种情况的经典之作。它通常用于允许脚本化的,包含的菜单系统区分任何页面和所有页面,并在此基础上提供功能,例如突出显示,删除链接等。它的工作方式是在每个页面上设置特定变量,然后由菜单系统进行测试,并据此采取行动。

同一个变量可以出于各种原因重复使用,例如:测试特定功能是否可用,包含页面元素等。