首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在回发页面时避免Javascript错误

在回发页面时避免Javascript错误
EN

Stack Overflow用户
提问于 2013-01-31 14:57:06
回答 1查看 1.5K关注 0票数 0

我在我的ASP.NET 4.0应用程序中使用Telerik控件,它位于任何更新面板之外。在同一页中,我使用了几个ModalPopUps & update pannels来防止意外的完整回发。有两个从Javascript函数调用的Pagemethods &以及两个服务器端Button单击事件,这些事件也是从javascript函数调用的。在处理过程中,Page经常抛出以下突出显示的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。首先,我尝试在update面板下注册控件&在页面加载时执行任何服务器端事件。

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

尝试了解决方案2。其次,我尝试将控件与其同步触发器绑定到更新面板中。

代码语言:javascript
复制
**<asp:AsyncPostBackTrigger ControlID="LstBoxXSD" EventName="SelectedIndexChanged"/>**

尝试了解决方案3。最近,需要使用来自jquery的第三方编辑器控件的KeyDown事件,我已经将编辑器控件中的IFrame与" KeyDown“事件连接起来,但是一旦update窗格执行任何异步回发操作,就会解除绑定的连接,所以我在JQuery中完成了下面的代码,以维护编辑器中的Iframe之间的钩式绑定& it's KeyDown事件。

代码语言:javascript
复制
**<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标记之后执行了上面的JQuery代码。请帮我一个可能的解决方案,从上述问题,我可以停止产生这个错误或绕过错误无论如何。因为它完全推迟了项目的完成。

EN

回答 1

Stack Overflow用户

发布于 2013-02-08 06:58:47

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

  1. 在页面属性中添加EnableEventValidation="false“。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14628690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档