我在SharePoint 2010团队网站上使用带有HTML,CSS,jQuery和JSOM的CEWP来开发标签内容。在每个标签中我也有一些“手风琴”类型的功能。第一个选项卡应该是一个类似新闻的工具,可以从当前站点的自定义列表应用程序中检索列表项。
问题是,无论何时我使用以下功能: ExecuteOrDelayUntilScriptLoaded(functionName,“sp.js”); 它导致页面加载的那部分延迟,并且在加载时看起来很笨拙。我试图使用: $(文件)。就绪(函数(){}); 建立预加载器并在页面加载时启动,这样就不存在空白区域。然后当执行functionName()时,预加载器淡出并且内容淡入。我认为这会起作用,但是,这会导致严格的事件发生时间,而不是基于JSOM脚本准备就绪。
我猜我真正寻求帮助的是如何使用 ExecuteOrDelayUntilScriptLoaded(functionName,“sp.js”); 在使用JSOM的SharePoint页面上创建流畅的内容检索。
答案 0 :(得分:0)
我不建议$(document).ready
与ExecuteOrDelayUntilScriptLoaded
一起使用,因为正如您所指出的那样,您无法控制执行顺序。
一个运行良好的选项是直接在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.gif
,loading16.gif
和progress.gif
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,但那是因为我喜欢避免额外的库。