2

我在 SharePoint 开发中收到 javascript 错误“Invalid argument on Line: 2 Char: 141544 in sp.ui.rte.js”。这似乎是 Google 在 SharePoint js 文件中的一个已知问题 - http://wss.boman.biz/Lists/Posts/Post.aspx?List=c0143750-7a4e-4df3-9dba-8a3651407969&ID=69 分析影响后我决定与其更改 SharePoint 14 配置单元中的 js,不如仅针对此错误抑制错误消息。我试图做以下事情:

ClientScriptManager cs = Page.ClientScript;

            //Check to see if the startup script is already registered.
            if (!cs.IsStartupScriptRegistered("Alert"))
            {
                StringBuilder cstext1 = new StringBuilder();

                cstext1.Append("<script type=text/javascript> window.onerror = function (msg, url, num) {return true;} </");
                cstext1.Append("script>");

                cs.RegisterStartupScript(this.GetType(), "Alert", cstext1.ToString());
            }

问题是这将抑制页面上的所有 js 错误,而不仅仅是 sp.ui.rte.js 错误。是否可以对 URL 进行字符串搜索(http://SHAREPOINT/_layouts/sp.ui.rte.js?rev=uY%2BcHuH6ine5hasQwHX1cw%3D%3D - 站点之间唯一一致的值是 /_layouts/ sp.ui.rte.js? ) 只是搜索并抑制这个确切的错误?谢谢你的帮助!

4

2 回答 2

1

到目前为止,这是我发现并且目前使用的最成功的修复:

function fixRTEBug() {
    // This Fix for parentElement bug in RTE should survive Service Packs and CU's
    function SubstituteRTERangeParentElement() {
        var originalRTERangeParentElement = RTE.Range.prototype.parentElement;
        RTE.Range.prototype.parentElement = function () {
            try {
                originalRTERangeParentElement();
            } catch (e) { }
        }
    }
    SubstituteRTERangeParentElement();
}

ExecuteOrDelayUntilScriptLoaded(fixRTEBug, "sp.ui.rte.js");
于 2013-08-12T16:41:34.267 回答
1

在 JS 中使用try/catch阻塞代码。如果消息与您想忽略的内容匹配,则什么也不做。传播其他一切。

如果您将其更改为分析消息并传播与忽略字符串不匹配的所有内容,则您的原始方法.onerror也将起作用。

于 2012-08-06T12:17:16.217 回答