判断当前是否为钉钉环境

在浏览器环境中调用 dd(钉钉 JSAPI)获取授权码时,若不在钉钉客户端内会抛出异常。为避免此问题,我们可先封装一个判断当前是否运行于钉钉环境的工具函数。

复制代码
import * as dd from 'dingtalk-jsapi';

/**
 * 判断当前是否为钉钉环境
 * @returns {boolean}
 */
export const isDingTalkEnv = () => {
    return dd.env.platform !== 'notInDingTalk';
};

使用示例:

复制代码
import { isDingTalkEnv } from "@/utils/dingTalk.js";

const loginByDingTalk = async () => {
  if (isDingTalkEnv()) {
    try {
      const codeRes = await dd.requestAuthCode({
        corpId: corpId,
        clientId: clientId
      });
      await userStore.dingTalkLogin(codeRes.code);
      const query = route.query;
      const otherQueryParams = Object.keys(query).reduce((acc, cur) => {
        if (cur !== "redirect") {
          acc[cur] = query[cur];
        }
        return acc;
      }, {});
      router.push({ path: redirect.value || "/", query: otherQueryParams });
    } catch (e) {
      console.error(e);
    }
  } else {
    console.log('当前非钉钉环境');
  }
};

通过 dd.env.platform 可以判断当前页面是否运行在钉钉容器中,从而决定是否调用钉钉相关 API,有效避免异常和兼容性问题。该方法适用于需要钉钉上下文支持的功能调用场景。

相关推荐
PP东13 小时前
Pyhton基础之多继承、多态
开发语言·python
元直数字电路验证13 小时前
Jakarta EE课程扩展阅读(二)
开发语言·jakarta ee
菲兹园长13 小时前
CSS(展示效果)
前端·javascript·css
滴滴滴嘟嘟嘟.14 小时前
Qt动画功能学习
开发语言·qt·学习
我的收藏手册14 小时前
性能监控shell脚本编写
前端·git·github
fantasy_arch14 小时前
SVT-AV1编码器中实现WPP依赖管理核心调度
java·前端·av1
福大大架构师每日一题14 小时前
go 1.25.1发布:重点修复net/http跨域保护安全漏洞(CVE-2025-47910)
开发语言·http·golang
Ophelia(秃头版14 小时前
经典设计模式:单例模式、工厂模式
java·开发语言·单例模式
香香甜甜的辣椒炒肉14 小时前
vue(7)-单页应用程序&路由
前端·javascript·vue.js
高级测试工程师欧阳14 小时前
HTML 表格基础
前端