防止退格按钮导航回上一个 XPage
Posted
技术标签:
【中文标题】防止退格按钮导航回上一个 XPage【英文标题】:Prevent backspace button from navigating back to previous XPage 【发布时间】:2015-02-27 08:28:38 【问题描述】:在我的 XPages 应用程序中,我注意到每当我按下退格键(输入字段没有焦点)时,应用程序都会返回到前一个 XPage。如何禁用此行为?我相信 JQuery 和/或 Dojo 可以做到这一点,但不确定如何将代码添加到 XPage?另外,阻止这种行为会对性能产生任何影响吗?
【问题讨论】:
不要刹车后退按钮。这是用户期望其浏览器行为方式的基本功能。调整您的流程以使其正常 我指的是退格键 Uuups。很抱歉 Backspace = 返回按钮的键盘快捷键(至少在 Windows 上的 Chrome 和 Firefox 中) 【参考方案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
属性,那么脚本块中写入的任何内容<script src='jquery.js'>Will omit this beacuse of src attribute.</script>
你能给我一个如何添加这段代码的例子吗?以上是关于防止退格按钮导航回上一个 XPage的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JavaScript 防止浏览器对退格按钮的默认历史返回操作?