2

我在 SharePoint 2007 中有一个内容编辑器 Web 部件,它包含一个在具有不同 JavaScript 源的页面上插入多个标签的功能。

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

这个问题过去经常发生,但我已经放置了一系列按钮来触发重新加载页面上包含脚本源代码的函数(参见下面的代码块:感谢 Herve Tourpe)

有人可以告诉我为什么会这样吗?

有关更多信息,我正在使用 MIT Simile Timeline API。通常,一旦我早上登录该站点,页面上的错误是“时间轴”未定义(显然,这是 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);
  }
}
4

1 回答 1

0

我认为您的问题是时间问题,通常是内容编辑器 Web 部件。

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

有几种方法可以解决它,您可以逐一解决,直到解决:

首先:为了速度慢,请务必在 Codeplex 上使用 SPWakeUp3 - 这将“唤醒”(即缓存)您的站点和脚本;SP 每 24 小时转储一次缓存 - 这将解决这个问题。

对于脚本本身:

试试这个:将代码从部件中取出,放入文本文件并上传到文档库 - 将 CEWP 指向该文件。

如果没有变化,请尝试使用 CodePlex 中的 HTML/JS Render Web 部件 - 这可以避免 CEWP 的一般问题:http: //davidmsterling.blogspot.com/2012/12/htmljavascript-rendering-web-part.html

如果仍然无法正常工作,您可以尝试 -

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

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

我很确定上述之一应该可以解决问题。

大卫·M·斯特林

http://davidmsterling.blogspot.com

http://www.sterling-consulting.com

http://www.sharepoint-blog.com

于 2013-01-04T14:08:36.423 回答