如果当前加载的页面处于编辑模式,我希望主页中的以下代码段能够运行,如下所示:
<!-- If edit mode, then add the following script -->
<script type="text/javascript">
document.documentElement.className += ' edit-mode';
</script>
<!-- End if -->
简单地说,我的脚本会在edit-mode
标记中添加html
类,就是这样。
我该怎么做?
由于
答案 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)
要获得所需的结果,您需要在母版页中添加以下代码。
<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;