回发页面时避免Javascript错误

时间:2013-01-31 14:57:07

标签: javascript jquery asp.net ajax radeditor

我在我的ASP.NET 4.0应用程序中使用Telerik RAD Editor控件,该应用程序位于任何更新面板之外。在同一页面中,我使用了几个ModalPopUps&更新pannels以防止意外的完全回发。 从Javascript函数&中调用了几个Pagemethods。以及从javascript函数调用的几个服务器端按钮单击事件。 在过程中经常页面抛出以下突出显示的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。 首先,我试图注册控件位于更新pannel&在页面加载中执行任何服务器端事件。

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

尝试解决方案2. 其次,我尝试将控件与更新面板中的Asychronous触发器绑定。

**<asp:AsyncPostBackTrigger ControlID="LstBoxXSD" EventName="SelectedIndexChanged"/>**

尝试过解决方案3。 接下来,有一个需要使用来自jquery的第三方编辑器控件的KeyDown事件,我已经使用“KeyDown”事件将IFrame挂钩在该编辑器控件中,但是一旦更新pannel执行任何异步回发它解开绑定,所以我已经完成了下面的代码在JQuery中维护编辑器内的Iframe之间的钩子绑定&amp;这是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>**

重要的是我在Body Tag之后完成了上面的JQuery代码。 请帮助我解决上述问题的可能解决方案,我可以停止生成此错误或无论如何绕过错误。因为它完全推迟了项目的完成。

1 个答案:

答案 0 :(得分:0)

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

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

3.在第一次创建cookie的页面加载时,在会话变量中输入初始值。