jQuery и SharePoint 2010 - Как я могу определить, находится ли страница в режиме редактирования с использованием javascript?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/4832

Вопрос

У меня есть некоторый 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://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing .webcontrols.editmodepanel.aspx

Некоторые примеры реализации вышеупомянутого класса:http://mystepstones.wordpress.com/2008/09/23/detecting-the-current-mode-displayedit/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top