SharePoint 2013在整页加载后添加javascript

Kam*_*ela 29 javascript sharepoint-2013

免责声明:我没有使用SharePoint2013的经验.

我有问题 - 我必须在整个页面加载后包含/触发一些javascript函数.我尝试监听DOMDocumentReady和window.load事件,但sharepoint在这些事件之后呈现页面的其余部分.

我的问题是:在呈现带有ajax的整个页面之后,我应该怎么做才能运行脚本.另外我注意到页面导航基于哈希(#)部分.显然我也必须发现那一刻.

任何帮助甚至链接到文档中的右页都会很棒!

小智 57

你是对的,在$(document).ready()之后页面上发生了很多事情.2013确实提供了一些选择.

1)脚本点播:(加载一个js文件,然后执行我的代码.)

function stuffThatRequiresSP_JS(){
    //your code
}
Run Code Online (Sandbox Code Playgroud)

SP.SOD.executeFunc("sp.js")

2)延迟直到加载(等待js文件,然后运行)

function stuffToRunAfterSP_JS(){
    //your code
}
ExecuteOrDelayUntilScriptLoaded(stuffToRunAfterSP_JS, "sp.js")
Run Code Online (Sandbox Code Playgroud)

3)其他东西完成后加载

function runAfterEverythingElse(){
    // your code
}
_spBodyOnLoadFunctionNames.push("runAfterEverythingElse");
Run Code Online (Sandbox Code Playgroud)

资料来源:

executeFunc:http://msdn.microsoft.com/en-us/library/ff409592( v = office.14).aspx

ExecuteOrDelayUntilScriptLoaded:http://msdn.microsoft.com/en-us/library/ff411788( v = office.14).aspx

无法在_spBodyOnLoadFunctionNames上找到源代码,但我在一些地方使用它.

祝好运.


Jac*_* A. 12

形成文件的事件注册功能大致相当于的_spBodyOnLoadFunctionNamesSP.SOD.executeOrDelayUntilEventNotified.调用此方法以接收"sp.bodyloaded"事件的通知:

SP.SOD.executeOrDelayUntilEventNotified(function () {
    // executed when SP load completes
}, "sp.bodyloaded");
Run Code Online (Sandbox Code Playgroud)

这个处理程序实际上在_spBodyOnLoadFunctionNames函数之前稍微触发.

此引用适用于SharePoint 2010,但SOD实用程序存在于SharePoint 2013中:http://msdn.microsoft.com/en-us/library/office/ff410354(v = office.14).aspx


Jos*_*ora 8

有一些不同的技术用于提供在SharePoint中的OnLoad事件之前/之后加载的自定义JavaScript代码:

ExecuteOrDelayUntilBodyLoaded.
Sys.Application.pageLoad.
document.ready Jquery.
_spBodyOnLoadFunctionNames.
_spBodyOnLoadFunction.
ExecuteOrDelayUntilScriptLoaded:sp.core.js.
SP.SOD.executeFunc: sp.js.
Sys.WebForms.PageRequestManager.PageLoaded
Run Code Online (Sandbox Code Playgroud)

- ExecuteOrDelayUntilBodyLoaded函数始终执行第一个(但在此阶段我们无法访问SP方法).这对于在OnLoad进程的早期阶段执行我们的自定义代码非常有用.

- 有两个SharePoint onLoad函数_spBodyOnLoadFunctionNames和_spBodyOnLoadFunction.始终按顺序执行.所以,如果我们想在_spBodyOnLoadFunctionNames中包含我们(或其他开发人员)的所有函数之后执行一些代码,那么使用这个函数是有用的_spBodyOnLoadFunction,因为它是在最后执行的.

- ExecuteOrDelayUntilScriptLoaded:sp.core.js和SP.SOD.executeFunc:sp.js. 以随机方式交换执行顺序.

- 如果我们想在所有函数(SP,加载函数,Yammer等)之后执行某些函数,我们可以使用此函数来附加OnLoad事件 - > Sys.WebForms.PageRequestManager.PageLoaded.

你可以在这里看到整篇文章解释每种类型,优点和缺点:https://blog.josequinto.com/2015/06/16/custom-javascript-function-loaded-after-the-ui-has-loaded-in -sharepoint-2013 /

问候!