jQuery и SharePoint 2010 - Как я могу определить, находится ли страница в режиме редактирования с использованием javascript?
-
16-10-2019 - |
Вопрос
У меня есть некоторый javascript в CEWP, который я хочу выполнять только тогда, когда страница находится в режиме отображения.Я использовал firebug, чтобы просмотреть страницу в поисках какой-нибудь переменной типа "msEditMode" или чего-то, на что я могу положиться.
Я видел массу вопросов и ответов о том, как определить, находится ли страница в режиме редактирования на стороне сервера, но я не могу найти решение о том, как определить, находится ли страница в режиме редактирования на стороне клиента.
Кто-нибудь может указать мне правильное направление?Нужно ли мне создавать веб-часть, которая просто выдает такую переменную?(Мне это кажется излишеством.)
Большое спасибо!
Решение
Решение Роба - посмотреть на кнопку - выглядит как жизнеспособный подход.
Кроме того, не стесняйтесь взглянуть на мой код Easy Tabs v5:
http://www.pathtosharepoint.com/sharepoint-user-toolkit/Pages/Easy-Tabs-v5.aspx
В случае с Easy Tabs я использовал другой подход, потому что мне нужен был код для работы как в SP 2007, так и в SP 2010.Вот тесты, которые я включил:
p.getAttribute("contenteditable")=="true"; //(where p is a Web Part zone)
document.forms[0].elements["MSOLayout_InDesignMode"].value=="1";
document.forms[0].elements["_wikiPageMode.value"]=="true"; //(wiki page)
Другие советы
Я нашел запись в блоге Амаль Хашим: Javascript Обнаруживает Страницу SharePoint В режиме редактирования Существуют различные подходы к страницам, вики-сайтам и страницам публикаций.Я объединил их в одну вспомогательную функцию:
function isEditMode() {
var publishingEdit = window.g_disableCheckoutInEditMode,
form = document.forms[MSOWebPartPageFormName],
input = form.MSOLayout_InDesignMode || form._wikiPageMode;
return !!(publishingEdit || (input && input.value));
}
Это возвращает true
если страница редактируется, и false
если страница находится в режиме просмотра.
Несколько дрянной подход заключается в поиске элемента на странице, который существует, когда страница находится в режиме редактирования.Например, когда вы находитесь в режиме редактирования, появляется лента "Инструменты редактирования", а слева находится значок сохранения.Если вы используете инструменты разработчика IE, вы увидите, что код кнопки сохранить выглядит следующим образом:
Таким образом, используя jQuery, вы можете проверить наличие "Сохранить и закрыть" на странице ... или выбрать полностью другой элемент - тот, который уникален.
Имейте в виду, что разные типы страниц (блоги, вики, страницы веб-частей) могут использовать, а могут и не использовать разные теги, поэтому это может не сработать повсеместно.Поэтому дважды проверьте страницу, с которой вы работаете, прежде чем включать скрипт.
Нашел больше информации.Если вы хотите сделать это с помощью объектной модели, посмотрите, поможет ли какая-либо из этих ссылок:
Некоторые примеры реализации вышеупомянутого класса:http://mystepstones.wordpress.com/2008/09/23/detecting-the-current-mode-displayedit/