从模板创建站点后 JSlink 发生变化

JSlink changes after creating site from template

我创建了一个网站,其中包含多个列表和这些列表的多个 CSR 渲染器。我通过 JSLink 将渲染器应用于表单。然后我尝试将该站点另存为模板并从该模板创建另一个模板。所有 JS 链接现在都已损坏,无处可去。

这是来自初始站点的 JSLinks 之一:

 <JSLink xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">~Site/SiteAssets/FormsManagement/Js/utils.js|~Site/SiteAssets/FormsManagement/Js/paymentsFormRenderer.js</JSLink>
</WebPart>

这是创建模板后的样子:

<JSLink xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">/sites/home/test-subsite/SiteAssets/FormsManagement/Js/utils.js|/sites/home/test-subsite/SiteAssets/FormsManagement/Js/paymentsFormRenderer.js</JSLink>

这些更改破坏了我所有的 CSR,我不知道如何修复它。我知道这两个链接必须是等效的,尽管在重新创建的子站点上,浏览器尝试从 cdn.sharepointonline.com 的域加载 javascript 这是错误的。 (我怀疑这是由于错误的相对寻址)。

非常感谢所有帮助!提前致谢。

所以我想通了。我不确定问题出在哪里,但我发现解决方法似乎非常有效。

我完全放弃了使用 JSLink 的想法,而是使用 <SharePoint:ScriptLink> 标记并以这种方式包含脚本。我包装了我的脚本,以便它们使用 ExecuteOrDelayUntilScriptLoaded([Script's closure here], 'clientForms.js'); 这似乎会产生与使用 JSLink 相同的结果,但 JSLink 中的标记不会扩展为相对 URL,并且链接不会断开。唯一的缺点是没有 Sharepoint Designer 没有人能够修改脚本,因为它们不再列在 JSLink 字段中。