我为这些列表创建了一个包含多个列表和几个CSR渲染器的站点。我通过JSLink将渲染器应用于表单。然后我尝试将网站保存为模板,并从此tempalte创建另一个。所有的JS链接现在都被破坏了,无处可去。
以下是初始网站的一个JSLink:
<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,这是错误的。 (我怀疑这是由于错误的相对寻址)。
非常感谢所有帮助!提前谢谢。
答案 0 :(得分:1)
所以我明白了。我不确定问题是什么,但我发现似乎工作得很好的解决方法。
我完全摒弃了使用JSLink的想法,而是使用了<SharePoint:ScriptLink>
标记并以这种方式包含了脚本。我将脚本包装起来,以便他们使用ExecuteOrDelayUntilScriptLoaded([Script's closure here], 'clientForms.js');
这似乎产生与使用JSLink相同的结果,但JSLink中的标记不会扩展到相对URL并且链接不会被破坏。唯一的缺点是,没有Sharepoint Designer,没有人能够修改脚本,因为它们不再列在JSLink字段中。