Escaping 如何在内容页中通过转义键隐藏模式弹出框

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.

我想通过按escape键隐藏模式弹出框。我发现了一种在包含body标签的页面(而不是内容页面)中工作的方法;使用下面的功能,以及body tag的onkeypress事件



    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)");