首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止Telerik RadChart生成onerror属性?

如何防止Telerik RadChart生成onerror属性?
EN

Stack Overflow用户
提问于 2010-04-15 21:18:44
回答 3查看 2.3K关注 0票数 1

我们在一个ASP.Net ASP.Net项目中使用Telerik Rad Controls for MVC Ajax。RadChart生成以下超文本标记语言:

代码语言:javascript
复制
<img onerror="if(confirm('Error loading RadChart image.\nYou may also wish to check the ASP.NET Trace for further details.\nDisplay stack trace?'))window.location.href=this.src;" src="ChartImage.axd?UseSession=true&amp;ChartID=e25ad666-e05b-4a92-ac0c-4f2c729b9382_chart_ctl00$MainContent$AverageCTMChart&amp;imageFormat=Png&amp;random=0.501658702968461" usemap="#imctl00_MainContent_AverageCTMChart" style="border-width: 0px;" alt="">

我想删除onerror属性;我真的不想让客户在出现问题时看到堆栈跟踪。我看不到任何方法来控制这个控件生成的标记。谷歌搜索没有提供任何帮助。以前有没有人处理过这个问题?

如何删除onerror属性?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-25 22:33:56

onerror仅在调试配置中显示。一旦你在Release中部署了你的应用程序,这个属性就不会被渲染!

票数 1
EN

Stack Overflow用户

发布于 2010-04-15 21:56:01

您可以这样做,只需将其添加到页面底部或在某个load事件中调用removeOnError。

代码语言:javascript
复制
function removeOnError(){
    //Grab all images
    var imgs = document.getElementsByTagName('img');
    for(var i=0;i<imgs.length;i++){
        //If they've got the onerror attribute
        if(imgs[i].onerror){
            //set it to null
            imgs[i].onerror = null;
        }
    }
}
//Call the function above
removeOnError();

编辑

看一下Telerik的网站,它似乎不是一个选项,所以我能想到的唯一方法就是覆盖页面的Render事件,并手动将其删除:

代码语言:javascript
复制
protected override void Render(HtmlTextWriter writer)
{
    using (System.IO.MemoryStream MS = new System.IO.MemoryStream())
    {
        using (System.IO.StreamWriter SW = new System.IO.StreamWriter(MS))
        {
            HtmlTextWriter NW = new HtmlTextWriter(SW);
            base.Render(NW);
            NW.Flush();
            MS.Position = 0;
            using (System.IO.StreamReader SR = new System.IO.StreamReader(MS))
            {
                string html = SR.ReadToEnd();
                MatchCollection MC = Regex.Matches(html, "<img.*?(?<OnError>onerror=\".*?\").*?>");
                foreach (Match M in MC)
                {
                    if (M.Success)
                    {
                        html = html.Replace(M.Groups["OnError"].Value, "");
                    }
                }
                Response.Write(html);
                SR.Close();
            }
        }
    }
} 
票数 0
EN

Stack Overflow用户

发布于 2013-12-24 20:55:57

Telerik控件检查属性

代码语言:javascript
复制
HttpContext.Current.IsDebuggingEnabled

决定是否生成onError属性。因此,要删除这些块,请确保在web.config的“compilation”节点中关闭了调试

代码语言:javascript
复制
<compilation debug="false">    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2645567

复制
相关文章

相似问题

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