如何在编辑模式下阻止jQuery运行Sharepoint Web部件?

时间:2014-12-19 22:21:51

标签: jquery sharepoint sharepoint-2010

我正在使用Sharepoint 2010构建一个网站,我在内容编辑器Web部件中创建了一个时髦的jQuery幻灯片(使用视图HTML代码编辑选项)。效果很好,除非我想编辑jQuery在编辑屏幕上运行的Web部件并导致各种各样的破坏。

我的HTML基本上是这样的:

<div class="slideshow">
    <div class="slide">Slide 1</div>
    <div class="slide">Slide 2</div>
</div>

我的jQuery是这样的:

$('.slideshow').each(function(){
    // Do the magic
});

在编辑时我是否可以依赖Sharepoint 2010 Web部件中的类或ID,以防止jQuery选择器看到我的幻灯片?像这样:

$('div:not(.sharepoint-edit-block) .slideshow').each(function(){
    // Do the magic
});

2 个答案:

答案 0 :(得分:4)

我没有使用其他答案中提到的隐藏输入ID,但它们存在并且也可以正常工作。

假设有一个发布页面,我总是使用以下内容。

$(document).ready(function(){

    // Only run if page is not in Design Mode
    var inDesignMode = document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode.value;

    if (inDesignMode !== "1")
    {

        $('.slideshow').each(function(){
            // Do the magic
        });
    }
});

答案 1 :(得分:1)

在维基页面上,您可以检查ID为_wikiPageMode的元素,如果您处于编辑模式,则value属性为Edit,否则为空(空字符串)。

如果您不在维基页面上,则可以查找ID为MSOLayout_InDesignMode的表单元素,如果您处于编辑模式,则value属性将为1否则它将为空(空字符串)。 Wiki页面也有这个标签,但是当wiki页面处于编辑模式时,它的值不会设置为1.Non-wiki页面不会有_wikiPageMode标签,因此你的选择器将为空(一个数组)没有结果),对val()的调用将是undefined

// technique for wiki pages
$("#_wikiPageMode").val() // "Edit" or ""

// technique for non-wiki pages
$("#MSOLayout_InDesignMode").val()  // "1" or ""