在SharePoint中加载JavaScript API-计时问题

在SharePoint中加载JavaScript API-计时问题,javascript,api,sharepoint,simile,Javascript,Api,Sharepoint,Simile,我在SharePoint 2007中有一个内容编辑器Web部件,其中包含一个函数,可以在页面上插入多个具有不同JavaScript源的标记 出于某种原因,要加载我的一个JavaScript源(API),大约需要4-5分钟和几次刷新。通常,这只会发生在我第一次访问SharePoint网站的早上 这个问题以前发生得更频繁,但后来我放置了一系列按钮,用于触发页面上包含脚本源代码的函数的重新加载(请参阅下面的代码块:归功于Herve Tourpe) 有人能告诉我为什么会这样吗 有关更多信息,我正在使用M

我在SharePoint 2007中有一个内容编辑器Web部件,其中包含一个函数,可以在页面上插入多个具有不同JavaScript源的标记

出于某种原因,要加载我的一个JavaScript源(API),大约需要4-5分钟和几次刷新。通常,这只会发生在我第一次访问SharePoint网站的早上

这个问题以前发生得更频繁,但后来我放置了一系列按钮,用于触发页面上包含脚本源代码的函数的重新加载(请参阅下面的代码块:归功于Herve Tourpe)

有人能告诉我为什么会这样吗

有关更多信息,我正在使用MIT Simile Timeline API。通常,当我早上登录到该站点时,页面上的错误是“Timeline”未定义(这显然是API文件中最完整的类)

对我来说,这要么意味着执行时间线的函数没有等待API加载足够长的时间,要么以下函数存在某种问题:

function includeJSScript(p_file) {
  // before we insert this script, we need to check if it already exists
  var bAlreadyExists = false;
  var scripts = document.getElementsByTagName('script');

  for (var i = 0; i < scripts.length; i++) {
    if (scripts[i].src == p_file) {
    bAlreadyExists = true;
    break;
    }
  }

  if (!bAlreadyExists) {
    var v_script = document.createElement('script');
    v_script.type = 'text/javascript';
    v_script.src = p_file;
    document.getElementsByTagName('head')[0].appendChild(v_script);
  }
}
函数includeJSScript(p_文件){
//在插入此脚本之前,我们需要检查它是否已经存在
var bAlreadyExists=false;
var scripts=document.getElementsByTagName('script');
对于(var i=0;i
我认为您的问题是时间,一般来说,是内容编辑器Web部件

问题是,该部分最后呈现,并且SharePoint中的DOM重载,这意味着它有时加载速度不够快(我在使用jQuery的Chrome中经常遇到这个问题)。由于SharePoint的缓存,在早上体验它的频率更高

有几种方法可以解决此问题,您可以逐一解决:

首先:对于速度慢,请确保在Codeplex上使用SPWakeUp3-这将“唤醒”(即缓存)您的站点和脚本;SP每24小时转储一次缓存—这将解决此问题

对于脚本本身:

尝试以下方法:将代码从部件中取出,放入文本文件并上载到文档库-将CEWP指向该文件

如果没有更改,请尝试使用CodePlex中的HTML/JS呈现Web部件-这避免了CEWP的一般问题:

如果仍然不工作,您可以尝试-

将脚本嵌入页面布局并使用CEWP或HTML/JS呈现(再次使用文件保存脚本调用)或

将脚本嵌入母版页(但这可能是您不需要的开销)

我很确定上面的一个应该可以解决这个问题

大卫·M·斯特林


请求是否按正确的顺序触发?服务器的回复是什么?提供静态JS文件真的不应该这么麻烦。仅供参考:HTML/JavaScript呈现Web部件适用于2010年-如果需要,您可以下载代码并将其转换回2007年(简单易行-只需打开2007年的新WP项目并剪切/粘贴代码即可)。