如何为SharePoint 2010站点开发预加载器,与JSOM Script和jQuery Document Ready无缝协作?

时间:2016-11-14 17:45:57

标签: jquery sharepoint sharepoint-2010

我在SharePoint 2010团队网站上使用带有HTML,CSS,jQuery和JSOM的CEWP来开发标签内容。在每个标签中我也有一些“手风琴”类型的功能。第一个选项卡应该是一个类似新闻的工具,可以从当前站点的自定义列表应用程序中检索列表项。

问题是,无论何时我使用以下功能:     ExecuteOrDelayUntilScriptLoaded(functionName,“sp.js”); 它导致页面加载的那部分延迟,并且在加载时看起来很笨拙。我试图使用:     $(文件)。就绪(函数(){}); 建立预加载器并在页面加载时启动,这样就不存在空白区域。然后当执行functionName()时,预加载器淡出并且内容淡入。我认为这会起作用,但是,这会导致严格的事件发生时间,而不是基于JSOM脚本准备就绪。

我猜我真正寻求帮助的是如何使用     ExecuteOrDelayUntilScriptLoaded(functionName,“sp.js”); 在使用JSOM的SharePoint页面上创建流畅的内容检索。

1 个答案:

答案 0 :(得分:0)

我不建议$(document).readyExecuteOrDelayUntilScriptLoaded一起使用,因为正如您所指出的那样,您无法控制执行顺序。

嵌入加载消息

一个运行良好的选项是直接在HTML中嵌入加载图像和/或消息,只在脚本最终加载时替换它或删除它。

<div id="CustomContent">
    <div id="CustomPlaceholder">
        <img src="/_layouts/images/loading16.gif" /> Retrieving Content...
    </div>
</div>

<script>
ExecuteOrDelayUntilScriptLoaded(
    function(){
        $("#CustomPlaceholder").remove();
        functionName();
    },"sp.js");
</script>

SharePoint附带了许多动画加载图片,您可以在/_layouts/images目录中找到这些图片,例如loading.gifloading16.gifprogress.gif

JSOM的替代方案

REST :如果您仍然对加载sp.js的延迟感到沮丧,您可以考虑使用REST Web服务而不是JSOM。您可以进行REST调用以从SharePoint检索信息,而无需等待加载任何库(如果您愿意使用XMLHttpRequest,则甚至不需要jQuery。)

SOAP :您还可以使用SharePoint提供的SOAP-based web services

SPServices :相对流行的第三方SPServices库使用SharePoint的基于SOAP的Web服务来提供类似于JSOM的功能,友好的包装器对象可能比REST更容易使用,具体取决于在你的舒适程度。一般来说,我更喜欢使用JSOM而不是SPServices,但那是因为我喜欢避免额外的库。

相关问题