Escaping 如何在内容页中通过转义键隐藏模式弹出框
我想通过按escape键隐藏模式弹出框。我发现了一种在包含body标签的页面(而不是内容页面)中工作的方法;使用下面的功能,以及body tag的onkeypress事件Escaping 如何在内容页中通过转义键隐藏模式弹出框,escaping,master-pages,modalpopupextender,content-pages,Escaping,Master Pages,Modalpopupextender,Content Pages,我想通过按escape键隐藏模式弹出框。我发现了一种在包含body标签的页面(而不是内容页面)中工作的方法;使用下面的功能,以及body tag的onkeypress事件 function catchEsc(e) { var kC = (window.event) ? // MSIE or Firefox? event.keyCode : e.keyCode; var Esc = (window.
function catchEsc(e) {
var kC = (window.event) ? // MSIE or Firefox?
event.keyCode : e.keyCode;
var Esc = (window.event) ?
27 : e.DOM_VK_ESCAPE // MSIE : Firefox
if (kC == Esc) {
var mpu = $find('ModalPopupExtender1');
mpu.hide();
}
}
问题是我使用的是一个内容页面,如果没有body标签,我不知道该怎么做。
有什么想法吗?这段代码也适用于内容占位符 而且不需要在代码后面添加处理程序
function pageLoad(sender, args) {
if (!args.get_isPartialLoad()) {
// add our handler to the document's
// keydown event
$addHandler(document, "keydown", onKeyDown);
}
}
function onKeyDown(e) {
if (e && e.keyCode == Sys.UI.Key.esc) {
$find('popPAlert').hide();
$find('ModalPopupThemeView').hide();
$find('AlPopUp').hide();
$find('Mod_Error').hide();
$find('Mod_preview').hide();
}
}
</script>
函数页面加载(发送方,参数){
如果(!args.get_isPartialLoad()){
//将我们的处理程序添加到文档的
//键控事件
$addHandler(文档“keydown”,onKeyDown);
}
}
函数onKeyDown(e){
if(e&&e.keyCode==Sys.UI.Key.esc){
$find('popPAlert').hide();
$find('ModalPopupThemeView').hide();
$find('AlPopUp').hide();
$find('Mod_Error').hide();
$find('Mod_preview').hide();
}
}
我自己解决了这个问题,如下所示:
- 在母版页中,我将body标记设置为服务器控件(id=“myBody”runat=“server”)
- 在内容页(aspx)中
- 我将modal popup的ClientMode设置为静态
- 我添加了javascript函数catchEsc(e):
- 最后,在内容页的代码隐藏中,我将下面的代码添加到页面加载:
function catchEsc(e) {
var kC = (window.event) ? // MSIE or Firefox?
event.keyCode : e.keyCode;
var Esc = (window.event) ?
27 : e.DOM_VK_ESCAPE // MSIE : Firefox
if (kC == Esc) {
var mpu = $find('ModalPopupExtender1');
mpu.hide();
}
}
HtmlGenericControl body =
(HtmlGenericControl)this.Page.Master.FindControl("myBody");
body.Attributes.Add("onkeypress", "catchEsc(event)");