如何在“ESC”键按下导航到以前访问过的页面。 Asp.net mvc(c#)

时间:2011-01-17 04:56:45

标签: c# asp.net asp.net-mvc

按下“ESC”键时,如何导航到上次访问的页面。我怎么能用Asp.net mvc(c#)做到这一点。请帮忙

4 个答案:

答案 0 :(得分:6)

转义键不会导致任何类型的回发,因此您将无法使用.net排它。你需要做的是用Javascript捕获转义按键。

document.onkeydown = function(e){ 
          if (e == null) { // ie 
            keycode = event.keyCode; 
          } else { // mozilla 
            keycode = e.which; 
          } 
          if(keycode == 27){ // escape, close box, esc 
              // Go back one page
              history.back()
          } 
        };

答案 1 :(得分:1)

我认为你可以用一些JavaScript来做到这一点。以下链接将使用JavaScript历史记录对象在历史记录中导航回来。

< a href =“javascript:history.go(-1)”>返回< / a>

将按键事件附加到文档以监视esc键,然后使用历史记录对象。

鲍勃

答案 2 :(得分:0)

您需要使用history.back()在JavaScript中执行此操作。

答案 3 :(得分:0)

我发现这个问题'因为我遇到了类似的问题。 rockinthesixstring的例子在IE中运行良好,但在Firefox中运行不正常。 alert()即使在Firefox中也可以,但不是history.back()。事实上,我把history()放在history.back()之后,我得到了警报但不是我的历史记录。相同的代码在输入或任何其他键上工作正常。在firefox中,似乎如果你按下转义键时尝试做一些事情,它会继续处理转义键,然后取消你想要做的任何事情。最后发现我必须强制事件的传播停止,如下所示...

// Check for escape key
if (keyCode == 27)
{
    // Go back in our history
    history.back();

    if (window.event)
    {
        // IE works fine anyways so this isn't really needed
        e.cancelBubble = true;
        e.returnValue = false;
    }
    else if (e.stopPropagation)
    {
        // In firefox, this is what keeps the escape key from canceling the history.back()
        e.stopPropagation();
        e.preventDefault();
    }

    return (false);
}