【问题标题】:Prevent backspace button from navigating back to previous XPage防止退格按钮导航回上一个 XPage
【发布时间】:2015-02-27 08:28:38
【问题描述】:

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

【问题讨论】:

  • 不要刹车后退按钮。这是用户期望其浏览器行为方式的基本功能。调整您的流程以使其正常
  • 我指的是退格键
  • Uuups。很抱歉
  • Backspace = 返回按钮的键盘快捷键(至少在 Windows 上的 Chrome 和 Firefox 中)

标签: jquery dojo xpages lotus-domino


【解决方案1】:

我使用以下代码解决了这个问题(在我将 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.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);
    }

      }  });

});

【讨论】:

    【解决方案2】:

    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>
    

    【讨论】:

    • 非常感谢。我决定使用 dojo 而不是 jquery,因为加载 jquery 库可能会对性能产生负面影响。
    【解决方案3】:

    试试这个:

    $(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,然后通过检查是否按下的键是具有8 的 keyCode 的退格键来防止 backspace 键的默认行为。

    【讨论】:

    • 您能告诉我如何专门将此代码添加到 XPage 中吗?我试过 但它不会编译
    • @TonyGuiheen 这不是将 js 代码写入脚本块的正确方法。如果您在脚本标记上应用src 属性,那么脚本块中写入的任何内容&lt;script src='jquery.js'&gt;Will omit this beacuse of src attribute.&lt;/script&gt;
    • 你能给我一个如何添加这段代码的例子吗?
    猜你喜欢
    • 2019-11-07
    • 2012-09-11
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多