初始化SharePoint后执行JavaScript函数

Mar*_*arc 5 javascript sharepoint sharepoint-2010

我有一个自定义的JS脚本,我加载到SharePoint中,并且在SP完成自己的初始化之后有问题要让我的init方法执行.

_spBodyOnLoadFunctionNames

我首先尝试了"官方"方式,并在加载后将我的函数名称添加到已执行函数列表中,_spBodyOnLoadFunctionNames.push("myInitMethod");但是不会在每次加载页面时触发,我不能依赖它.

ExecuteOrDelayUntilScriptLoaded

然后我尝试使用ExecuteOrDelayUntilScriptLoaded(myInitMethod, "sp.js");函数,但它不会在每个页面加载时触发.

两种方式都有效 - 但不是每次都有效.我假设初始化SP 之前有时会加载我的脚本.这主要发生在Chrome上,但也发生在IE上.

如何在SP准备好后确保我的脚本执行?


注意:加载页面并且SP对象未完全初始化时会有一个有趣的行为(ExecuteOrDelayUntilScriptLoaded中的已注册函数尚未被调用):只要我点击页面中的"向上导航"锚点(你在哪里)可以看到subites的hiarchy)以下文件被加载并且我的init函数(在ExecuteOrDelayUntilScriptLoaded中注册)被调用!

  • core.debug.js
  • sp.core.debug.js
  • ScriptResx.ashx
  • sp.ui.dialog.debug.js
  • sp.runtime.debug.js
  • sp.debug.js

所以在点击之后一切都很好 - 但为什么不在页面加载上呢?

Mar*_*arc 4

看来此行为与 SP 2010 和 Google Chrome 之间的一些问题有关 - 我在其他浏览器上没有此问题。