我在CEWP中有一些JavaScript,只有在页面处于显示模式时才要执行这些JavaScript。我已经使用Firebug来搜索页面上的某些“ MSEDITMODE”类型的变量或我可以依靠的东西。

我已经看到有关如何从服务器端判断页面是否处于编辑模式的大量问题和答案,但是我找不到如何判断页面是否处于编辑模式,客户端端的解决方案。

谁能指向正确的方向?我需要创建一个简单地发出这样的变量的网络部分吗? (对我来说这似乎是过分的。)

非常感谢!

有帮助吗?

解决方案

Rob的解决方案 - 看按钮 - 看起来像是一种可行的方法。

另外,请随时查看我的简单选项卡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)

其他提示

我找到了Amal Hashim的博客文章: JavaScript在编辑模式下检测SharePoint页面 页面,Wiki和出版页面有不同的方法。我将它们合并为一个辅助功能:

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可以检查页面上的“保存和关闭”的存在...或完全选择其他元素 - 一个唯一的元素。

请记住,不同的页面类型(博客,Wiki,Web Part页面)可能会或可能不会使用不同的标签,因此这可能无法全面使用。因此,在包含脚本之前,请仔细检查您正在使用的页面。

找到了更多信息。如果您想通过对象模型进行操作,请查看以下任何一个链接是否有帮助:

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.editmodepanel.aspx

上述类的一些示例实现:http://mystepstones.wordpress.com/2008/09/23/detecting-the-current-mode-displayit/

许可以下: CC-BY-SA归因
scroll top