You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击Generate按钮触发TypeError: c.lang.link is undefined异常求助

这个问题我之前在ASP.NET项目整合CKEditor时也碰到过,结合你描述的「开发者工具关闭时出错,打开后消失」的现象,大概率是CKEditor初始化时机不对或者资源加载/控件ID匹配异常导致的,下面给你几个针对性的解决方案:

1. 替换硬编码的客户端ID,用服务器控件的ClientID

你现在初始化CKEditor时用的是硬编码的ContentPlaceHolder1_UC_HR_editor1,但ASP.NET的嵌套用户控件ID可能会因为页面结构变化而改变,一旦ID不匹配,CKEditor无法找到目标textarea,就会引发后续的语言资源加载异常。

修改你的初始化脚本,改用服务器控件的ClientID动态获取:

var langConfig = document.getElementById('<%= hf_lang.ClientID %>').value;
CKEDITOR.replace('<%= editor1.ClientID %>', {
    allowedContent: true,
    height: '650px',
    defaultLanguage: langConfig.split('|')[0],
    contentsLangDirection: langConfig.split('|')[1]
});

2. 确保CKEditor在DOM完全就绪后初始化

有时候页面还没完全渲染完成,你的初始化脚本就已经执行了,导致CKEditor无法正确加载语言资源。而打开开发者工具时,浏览器加载速度变慢,DOM刚好在脚本执行前就绪,所以错误消失。

你可以把初始化逻辑放到window.load事件里,或者用ASP.NET的后台代码注册启动脚本:

方案A:前端脚本方式

window.addEventListener('load', function() {
    var langConfig = document.getElementById('<%= hf_lang.ClientID %>').value;
    CKEDITOR.replace('<%= editor1.ClientID %>', {
        allowedContent: true,
        height: '650px',
        defaultLanguage: langConfig.split('|')[0],
        contentsLangDirection: langConfig.split('|')[1]
    });
});

方案B:后台注册脚本(更可靠)

在用户控件的后台代码Page_Load事件里添加:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        string initScript = $@"
            window.addEventListener('load', function() {{
                var langConfig = document.getElementById('{hf_lang.ClientID}').value;
                CKEDITOR.replace('{editor1.ClientID}', {{
                    allowedContent: true,
                    height: '650px',
                    defaultLanguage: langConfig.split('|')[0],
                    contentsLangDirection: langConfig.split('|')[1]
                }});
            }});
        ";
        ClientScript.RegisterStartupScript(this.GetType(), "InitCKEditor", initScript, true);
    }
}

3. 检查CKEditor语言文件与缓存问题

错误c.lang.link is undefined也可能是link插件的语言文件缺失或缓存损坏:

  • 确认ckeditor/lang目录下存在对应语言的文件(比如zh-cn.js,如果你的langConfig是中文的话);
  • 清除浏览器缓存,或者给CKEditor的引用添加版本参数强制刷新:
<script src="ckeditor/ckeditor.js?v=20240520"></script>

4. 确认link插件未被禁用

检查CKEditor的config.js,确保link插件没有被移除,默认配置是包含link插件的,如果手动修改过插件列表,要把link加进去:

config.plugins = '...link...'; // 确保link在插件列表中

先试试前两个方案,这是最常见的解决思路,应该能解决你遇到的问题。

内容的提问来源于stack exchange,提问作者Anyname Donotcare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:24:50