最近项目是要做一个SharePoint Framework的App,由于要从MMS中加载数据,所以代码中直接使用spComponentLoader加载了SP.js。但在实际开发测试中发现,在调用SP.ClientContext.get_current()的时候,某些情况下ClientContext是有问题的。
暂时知道的影响范围包括:
例如当Site Url为https.//tenant.sharepoint.com/sites/abc时,上述方法返回的ClientContext会使用类似于https://tenant.sharepoint的错误URL,从.com之后都被截取了。所以在之后JSOM尝试去调用_api/contextinfo的时候,都会报错。
到目前为止,微软官方并没有给出解决方案。可以暂时使用以下方法解决。
//----workaround var clientContext = window.location.pathname.indexOf(‘.aspx‘) > -1 ? SP.ClientContext.get_current() : new SP.ClientContext(window.location.pathname); //----test var targetWeb = clientContext.get_web(); clientContext.load(targetWeb); clientContext.executeQueryAsync(()=> console.log(targetWeb));
虽然不完美,但是解决了问题。
SharePoint Modern页面ClientContext的错误URL
原文:https://www.cnblogs.com/kay-zhao/p/12736724.html