防止退格按钮导航回以前的XPage

时间:2015-02-27 08:28:39

标签: jquery dojo xpages lotus-domino

在我的XPage应用程序中,我注意到每当我按下退格键(没有输入字段具有焦点)时,应用程序将返回到之前的XPage。如何禁用此行为?我相信这可以用于JQuery和/或Dojo,但我不确定如何将代码添加到XPage中?另外,可以防止这种行为对性能有任何影响吗?

3 个答案:

答案 0 :(得分:2)

我使用以下代码解决了这个问题(在我将jquery添加到WEB-INF文件夹之后):

<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>

<xp:eventHandler event="onClientLoad" submit="false">
    <xp:this.script><![CDATA[

$(document).keypress(function(e) {
var elid = $(document.activeElement).is("input, textarea") ;

if (e.keyCode === 8 && !elid) {
    if(e.ctrlKey) {
        window.history.back()
    }
    else {
        alert("Navigating with Backspace has been disabled. Use CTRL + Backspace if you want to go back to the previous page (and lose any unsaved changes).");
        return false;
    }
}
});
]]></xp:this.script>
</xp:eventHandler>

在dojo中为此提供解决方案也很好!

编辑:这是此解决方案的dojo版本 -

dojo.addOnLoad( function(){dojo.connect( document, 'keypress', function(e){

    var activeElementId = document.activeElement.tagName;  

     if(e.keyCode === 8 && activeElementId != "INPUT" && activeElementId != "TEXTAREA"){ 

     if(e.ctrlKey) {
        window.history.back()
    }
     else {
        alert(messageValue);
        dojo.stopEvent(e);
    }

      }  });

});

答案 1 :(得分:1)

试试这个:

$(document).on('keydown', function(e){
    var kc = e.which || e.keyCode;
    if(kc == 8 && document.activeElement === 'body'){
        e.preventDefault();
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' />


此解决方案检查活动元素是否为body,然后如果按下的键是keyCode为{{1的退格键,则阻止退格键的默认行为。 }}

答案 2 :(得分:1)

Dojo版本,以防止Esc关闭客户端中的xPage选项卡。猜猜你也可以为你的问题使用类似的东西。

<xp:eventHandler
        event="onClientLoad"
        submit="false">
        <xp:this.script><![CDATA[dojo.addOnLoad( function(){ 
 dojo.connect( document, 'keydown', function(e){  
         if(e.keyCode === 27){ dojo.stopEvent(e); }        
 });
});]]></xp:this.script>
    </xp:eventHandler>