前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django CKEditor 给 a tag(标签)添加 target 默认值

Django CKEditor 给 a tag(标签)添加 target 默认值

作者头像
卓越笔记
发布2023-02-18 14:14:02
1.5K0
发布2023-02-18 14:14:02
举报
文章被收录于专栏:卓越笔记

启发文档

https://ckeditor.com/docs/ckeditor4/latest/guide/dev_disallowed_content.html

代码语言:javascript
复制
CKEDITOR.on( 'dialogDefinition', function( ev ) {
    // Take the dialog name and its definition from the event data.
    var dialogName = ev.data.name;
    var dialogDefinition = ev.data.definition;

    // Check if the definition is from the dialog window you are interested in (the "Link" dialog window).
    if ( dialogName == 'link' ) {
        // Get a reference to the "Link Info" tab.
        var infoTab = dialogDefinition.getContents( 'info' );
        console.log(infoTab);
        // Set the default value for the URL field.
        var urlField = infoTab.get( 'url' );
        urlField[ 'default' ] = 'www.example.com';
    }
});

我的思路

把上面实现的原理分析,默认的 url 是怎么加进去的。

在 django ckeditor 的 config.js 的代码中,我加了几个 console.log 得到结果:

就是两次 get 元素 id,得到需要的节点,再设置这个节点的默认值。

再看 超链接 的 目标 选项卡的值:

从这里也能看出 目标 窗口页面的默认值要获取的 id 是 linkTargetType,获取它要给它设置 default,就可以达到想要的目的。

实现代码

CKEditor config.js 代码路径:../lib/python3.6/site-packages/ckeditor/static/ckeditor/ckeditor/config.js

config.js 修改完后要重新收集静态文件部署,正式环境才能使用。而 debug 环境直接改 config.js 的源码就可以使用。

代码语言:javascript
复制
CKEDITOR.on('dialogDefinition', function (ev) {
    // Take the dialog name and its definition from the event data
    var dialogName = ev.data.name;
    var dialogDefinition = ev.data.definition;


    if (dialogName == "link") {
        // Get a reference to the "Link Info" tab.
        var infoTab = dialogDefinition.getContents('info');
        console.log(infoTab);
        // Set the default value for the URL field.
        var urlField = infoTab.get('url');
        urlField['default'] = 'https://xieboke.net/';

        // Set the default value for the linkTargetType(目标窗口默认值)
        var targetTab = dialogDefinition.getContents('target');
        console.log(targetTab);
        var targetField = targetTab.get("linkTargetType");
        console.log(targetField);
        targetField["default"] = "_blank";
    }

})

额外发现

django ckeditor 的 config.js 里面的 dialogDefinition 有几个常用方法:

dialogDefinition.onOk(点击 确定 的时候)

dialogDefinition.onShow(展示弹框的时候)

dialogDefinition.onCancel(点击 取消 的时候)

其他实现方法

直接改掉 ../lib/python3.6/site-packages/ckeditor/static/ckeditor/ckeditor/plugins/link/dialogs/link.js 里 id 为 linkTargetType 的 default 的值:

代码语言:javascript
复制
type : 'select',
id : 'linkTargetType',
label : commonLang.target,
'default' : '_blank',

具体请看:https://stackoverflow.com/questions/46558041/ckeditor-default-target-link-blank-not-work-properly

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-3-7 22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 启发文档
  • 我的思路
  • 实现代码
  • 额外发现
  • 其他实现方法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档