如何确定 Dynamics XRM javascript 是从统一接口 (UCI) 还是旧版 Web 客户端调用的?

How to determine if Dynamics XRM javascript is being invoked from the unified interface (UCI) or the legacy web-client?

有函数:Xrm.Internal.isUci(),但标记为Internal,所以它很可能不应该被使用。但是,我需要一种方法来确定我的代码是从 UCI 调用还是从遗留 Web 客户端调用(因为代码的行为方式存在行为差异)。

是否有支持的机制来确定这一点?

这就是我们今天使用的,它受支持并为我们工作:

function isUCI() {
   var globalContext = Xrm.Utility.getGlobalContext();
   var t1 = globalContext.getCurrentAppUrl();
   var t2 = globalContext.getClientUrl();
   return t1 !== t2;
}

Community thread on same topic

另一个可能有效的受支持选项:

var globalContext = Xrm.Utility.getGlobalContext();
globalContext.getCurrentAppProperties().then(successCallback, errorCallback);