防止退格按钮导航回上一个 XPage
Prevent backspace button from navigating back to previous XPage
在我的 XPages 应用程序中,我注意到每当我按下退格键(没有焦点的输入字段)时,应用程序 returns 到前一个 XPage。如何禁用此行为?我相信 JQuery 和/或 Dojo 可以做到这一点,但我不确定如何将代码添加到 XPage?另外,防止这种行为会对性能产生任何影响吗?
试试这个:
$(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
然后防止 backspace 键的默认行为,如果按下的键是具有8
.
的密钥代码
我使用以下代码解决了这个问题(在我将 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);
}
} });
});
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>
在我的 XPages 应用程序中,我注意到每当我按下退格键(没有焦点的输入字段)时,应用程序 returns 到前一个 XPage。如何禁用此行为?我相信 JQuery 和/或 Dojo 可以做到这一点,但我不确定如何将代码添加到 XPage?另外,防止这种行为会对性能产生任何影响吗?
试试这个:
$(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
然后防止 backspace 键的默认行为,如果按下的键是具有8
.
我使用以下代码解决了这个问题(在我将 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);
}
} });
});
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>