, так как экспертов по SharePoint нет, я сделал обходной путь для решения своей проблемы, и ниже моего решения в двух версиях, сначала в jQuery, а затем с использованием чистого JavaScript,
, в основном я пытался искатьспециальные классы, которые существуют только в режиме редактирования, например .ms-SPZoneLabel
- это класс, который переносит зону веб-части в режиме редактирования, .edit-mode-panel
- это класс, который переносит поле для ввода данных на страницах статьи, а .ewiki-margin
ввики-страницы ...
// jQuery version
$(function(){
if ($('.ms-SPZoneLabel, .edit-mode-panel, .ewiki-margin').length) {
document.documentElement.className += ' edit-mode';
}
});
// pure javascript way
(function(){
// defining fall back getElementsByClassName if not exist (IE)
if(!document.getElementsByClassName) {
document.getElementsByClassName = function(cl) {
var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = this.getElementsByTagName('*');
for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) {
retnode.push(elem[i]);
}
}
return retnode;
};
}
// then checking if there's any webpart zone in the page
if( document.getElementsByClassName('ms-SPZoneLabel').length ||
document.getElementsByClassName('edit-mode-panel').length ||
document.getElementsByClassName('ewiki-margin').length) {
document.documentElement.className += ' edit-mode';
}
})();
если у кого-то есть лучшее решение (например, тег ASP для определения его на стороне сервера), пожалуйста, запишите свое решение