在回发页面时避免Javascript错误

在回发页面时避免Javascript错误,javascript,jquery,asp.net,ajax,radeditor,Javascript,Jquery,Asp.net,Ajax,Radeditor,我在ASP.NET 4.0应用程序中使用Telerik RAD编辑器控件,它位于任何更新窗格之外。在同一个页面中,我使用了几个modalpopup和update窗格来防止意外的完全回发。 有两个Pagemethods是从Javascript函数调用的&还有两个服务器端按钮单击事件也是从Javascript函数调用的。 在这个过程中,Page经常抛出下面突出显示的Javascript错误&在没有Javascript函数继续或调用任何服务器端方法或事件之后&程序被挂起。一旦它托管在本地服务器上,并且

我在ASP.NET 4.0应用程序中使用Telerik RAD编辑器控件,它位于任何更新窗格之外。在同一个页面中,我使用了几个modalpopup和update窗格来防止意外的完全回发。 有两个Pagemethods是从Javascript函数调用的&还有两个服务器端按钮单击事件也是从Javascript函数调用的。 在这个过程中,Page经常抛出下面突出显示的Javascript错误&在没有Javascript函数继续或调用任何服务器端方法或事件之后&程序被挂起。一旦它托管在本地服务器上,并且出现下面定义的错误,应用程序将通过进一步的javascript调用继续运行

错误消息来自:

function Sys$WebForms$PageRequestManager$_endPostBack(error, executor, data) {
        if (this._request === executor.get_webRequest()) {
            this._processingRequest = false;
            this._additionalInput = null;
            this._request = null;
        }
        var handler = this._get_eventHandlerList().getHandler("endRequest");
        var errorHandled = false;
        if (handler) {
            var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
            handler(this, eventArgs);
            errorHandled = eventArgs.get_errorHandled();
        }
        if (error && !errorHandled) {
            **throw error;**
        }
    }
上面标记的区域抛出错误。

我尝试过以下定义的方法,但还不能最终确定相同的方法,即停止反映此错误或跳过此错误,以便不会产生任何影响,从而影响应用程序的正常流程周期

尝试解决方案1。 首先,我尝试注册位于更新面板下的控件&在页面加载中执行任何服务器端事件

ScriptManager ScrMgr=new ScriptManager(); ScrMgr.RegisterAsyncPostBackControl(this.LstBoxXSD)

尝试解决方案2。 其次,我尝试在更新面板中使用非同步触发器绑定控件

**<asp:AsyncPostBackTrigger ControlID="LstBoxXSD" EventName="SelectedIndexChanged"/>**
****
尝试解决方案3。 接下来,需要使用jquery中的第三方编辑器控件的KeyDown事件,我已经用“KeyDown”事件钩住了该编辑器控件中的IFrame,但一旦update pannel执行任何异步回发,它就会解除绑定,因此,我在JQuery中编写了以下代码,以在编辑器中维护Iframe和它的KeyDown事件之间的挂钩绑定

**<script language="javascript" type="text/javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function EndRequestHandler(sender, args) {
        $(document).ready(function () {
            $(function () {
                $('#3rdPartyControl_contentIframe').contents().find("body").bind("keydown", function (e) {
                    e = e || window.event; // because of Internet Explorer quirks... 
                    var code = e.which || e.charCode || e.keyCode; ;
                    if (code == 49 && !e.altKey && !e.ctrlKey && !e.shiftKey) {
                        // alert(code);
                    } else if (code == 65 && e.altKey) {
                        //   alert(code);
                    }
                    else if (code == 83 && e.altKey) {                       
                        SelectElement();
                    }
                    else if (code == 80 && e.altKey) {
                        if (String($find("3rdPartyControl").getSelectionHtml().trim()).length > 0) {
                            RemoveParentElem();
                        }
                    }
                    else if (code == 82 && e.altKey) {
                        if (String($find("3rdPartyControl").getSelectionHtml().trim()).length > 0) {
                            RemoveElem();
                        }
                    }
                    else {
                    }
                });
            });
        });
    }
</script>**
**
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
函数EndRequestHandler(发送方,参数){
$(文档).ready(函数(){
$(函数(){
$('#3rdPartyControl_contentIframe').contents().find(“body”).bind(“keydown”,函数(e){
e=e | | window.event;//由于Internet Explorer的怪癖。。。
var code=e.which | e.charCode | e.keyCode;
如果(代码==49&&!e.altKey&&!e.ctrlKey&&!e.shiftKey){
//警报(代码);
}else if(代码==65&&e.altKey){
//警报(代码);
}
如果(代码==83&&e.altKey){
SelectElement();
}
else if(代码==80&&e.altKey){
if(字符串($find(“3rdPartyControl”).getSelectionHtml().trim()).length>0){
RemoveParentElem();
}
}
else if(代码==82&&e.altKey){
if(字符串($find(“3rdPartyControl”).getSelectionHtml().trim()).length>0){
removelem();
}
}
否则{
}
});
});
});
}
**
重要的是,我在Body标记之后完成了上面的JQuery代码。
请帮助我从上述问题中找到一个可能的解决方案,我可以停止生成此错误,也可以绕过此错误。因为它完全推迟了项目的完成。

这是为了第一次从update pannel子控件事件中写入一些会话变量。要避免此解析错误,应遵循以下解决方案之一: 1.Page.Trace.IsEnabled=false; 应该在同步页面加载和异步页面加载中禁用跟踪。 如果(!Page.IsPostBack) { Page.Trace.IsEnabled=false; } else if(ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack) { Page.Trace.IsEnabled=false; }

二,。 在页面属性中添加EnableEventValidation=“false”

3.首次加载页面时,将初始值放入会话变量中以创建cookie