#javascript #html #sharepoint #sharepoint-2010
Вопрос:
У меня проблема со страницей точки Sharepoint, которая была настроена в 2010 году. Ошибка произошла сама по себе, в исходном коде не было никаких изменений. Сервер Windows и Sharepoint не были обновлены. Ошибка начинается с а а SP.UI.RTE.JS файл. Когда я искал имя файла, я нашел множество форумов. Из них я узнал, что это типичная ошибка, которая была в течение многих лет, но ни одно из предложенных решений не сработало для меня. Вы можете увидеть ошибку ниже (на экране печати).:
введите описание изображения здесь
Я попробовал эти исправления:
SP.SOD.executeFunc('sp.ui.rte.js', null, function () { if (/var $v_0 = RTE.Selection.getSelectionRange();[rnt ]*var $v_1 = $v_0.parentElement();/.test(RTE.Canvas.checkCurrentFocus.toString())) { var _oldCheckCurrentFocus = RTE.Canvas.checkCurrentFocus; RTE.Canvas.checkCurrentFocus = function () { if(RTE.Selection.getSelectionRange()) return _oldCheckCurrentFocus(); }; } }); function fixRTEBug() { if (typeof RTE.Canvas.checkCurrentFocus !== 'undefined') { RTE.Canvas.checkCurrentFocus = function() {ULSkay:; var $v_0 = RTE.Selection.getSelectionRange(); if ($v_0) { //this is different from SP to avoid error in console var $v_1 = $v_0.parentElement(); if (RTE.Canvas.isInEditable($v_1) amp;amp; !RTE.Cursor.get_range().isValid()) { RTE.Cursor.updateRangeToCurrentSelection(); RTE.Cursor.update(); } } } } // 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"); function spUIRTESetStartEndBugFix() { Range.prototype.setStartOld = Range.prototype.setStart; Range.prototype.setStart = (function (a, b) { this.setStartOld(a, Math.min(b, this.endOffset)); }); Range.prototype.setEndOld = Range.prototype.setEnd; Range.prototype.setEnd = (function (a, b) { this.setEndOld(a, Math.min(b, this.endOffset)); }); }; ExecuteOrDelayUntilScriptLoaded(spUIRTESetStartEndBugFix, "sp.ui.rte.js");