在编辑模式下页面的sharepoint自定义样式

时间:2011-07-20 10:29:22

标签: javascript asp.net sharepoint sharepoint-2010 master-pages

如果当前加载的页面处于编辑模式,我希望主页中的以下代码段能够运行,如下所示:

<!-- If edit mode, then add the following script -->
<script type="text/javascript">
    document.documentElement.className += ' edit-mode';
</script>
<!-- End if -->

简单地说,我的脚本会在edit-mode标记中添加html类,就是这样。

我该怎么做?

由于

4 个答案:

答案 0 :(得分:6)

您可以使用PublishingWebControls:EditModePanel控件。当页面处于编辑模式时,此控件将处理此标记中包含的信息。

<PublishingWebControls:EditModePanel runat="server" id="IncludeEditModeClass" > 
    <asp:Content>
        <script type="text/javascript">
                document.documentElement.className += ' edit-mode';
        </script>
    </asp:Content> 
</PublishingWebControls:EditModePanel> 

答案 1 :(得分:0)

由于没有SharePoint专家,我已经做了一个解决我的问题的解决方法,在我的解决方案下面有两个版本,首先是jQuery,第二个是使用纯JavaScript,

主要是我试图查找仅在编辑模式下存在的特殊类,例如.ms-SPZoneLabel是在编辑模式下包装Web部件区域的类,.edit-mode-panel是包含a的类在文章页面中输入数据的字段,以及在Wiki页面中输入.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服务器端确定ASP标签) 请写下您的解决方案

答案 2 :(得分:0)

如果您将它用作书签,则此代码可以正常工作:

javascript:if%20(document.forms['aspnetForm']['MSOLayout_InDesignMode']%20!=%20null)%20document.forms['aspnetForm']['MSOLayout_InDesignMode'].value%20=%201;if%20(document.forms['aspnetForm']['MSOAuthoringConsole_FormContext']%20!=%20null)%20document.forms['aspnetForm']['MSOAuthoringConsole_FormContext'].value%20=%201;theForm.submit();

我尝试将其转换为纯Javascript,但它在我的firefox Javascript控制台中无效。

SP_EditPage: function(){
    var thisdocument = window.content.document;
    if (thisdocument.forms['aspnetForm']['MSOLayout_InDesignMode'] != null) 
        thisdocument.forms['aspnetForm']['MSOLayout_InDesignMode'].value = 1;
    if (thisdocument.forms['aspnetForm']['MSOAuthoringConsole_FormContext'] != null) 
        thisdocument.forms['aspnetForm']['MSOAuthoringConsole_FormContext'].value = 1;
        theForm.submit();   
},

如果有人能用普通的javascript工作,我很感兴趣!它告诉我:   错误:TypeError:thisdocument.forms.aspnetForm未定义   源文件:Javascript命令   行:2

小书签来自这个家伙的网站:   http://blog.mastykarz.nl/sharepoint-developer-bookmarklets/

这是另一个。它会在侧栏打开的情况下启动编辑页面。这个适用于我:

SP_EditPage: function(){
    var thisdocument = getBrowser().contentWindow.document;
    if(thisdocument.location.href.search('ToolPaneView=') == -1 ){
        if (thisdocument.location.search.indexOf('?') == 0){
            thisdocument.location=(thisdocument.location.href + '&ToolPaneView=2'); 
        }else{
            thisdocument.location=(thisdocument.location.href + '?ToolPaneView=2'); 
        } 
    } else {
        thisdocument.location=thisdocument.location.href;
    }   
},

答案 3 :(得分:0)

要获得所需的结果,您需要在母版页中添加以下代码。

&#13;
&#13;
<script type="text/javascript">
		var inDesignMode = document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode.value;
		
		if (inDesignMode == "1")
		{
		    // page is in edit mode
				<!-- If edit mode, then add the following script -->
				
					document.documentElement.className += ' edit-mode';
				
				<!-- End if -->
		
		}
		else
		{
		    // page is in browse mode 
		} 

   </script> 
&#13;
&#13;
&#13;

相关问题