更改TinyMCE中的默认字体系列

时间:2013-07-29 12:31:55

标签: javascript css fonts tinymce font-face

我已使用文档here成功更改了编辑器中的默认字体,但这让我遇到了问题。原始默认字体不再适用于字体下拉列表。

原始默认值:Verdana
新默认值:MyCustomFont

当我输入编辑器时,默认情况下我会看到MyCustomFont字体。如果我尝试将其更改为Verdana(原始默认值),则没有任何反应。我可以将其更改为除Verdana之外的任何字体系列。我还注意到,当我在下拉列表中选择MyCustomFont时,内容会被带有内联样式的跨度所包围。原始默认字体不会发生这种情况(因此没有任何反应)。

在我看来,似乎缺少一个关键的文档 - 如何告诉编辑器(特别是字体功能)我在css中默认定义的字体是默认字体。

我用Google搜索了一下但没有结果。其他人似乎都在为上述文件做好准备。我是唯一一个遇到这个问题的人吗?如果没有,请帮忙! :)

请注意,this问题的答案不回答我的问题。

12 个答案:

答案 0 :(得分:28)

可能为时已晚......但

$('.tinymce').tinymce({
    setup : function(ed) {
        ed.onInit.add(function(ed) {
            ed.execCommand("fontName", false, "Arial");
            ed.execCommand("fontSize", false, "2");
        });
    }
});

修改

对于TinyMCE 4,如@ jason-tolliver和@georg所述,语法为:

ed.on('init', function (ed) {
    ed.target.editorCommands.execCommand("fontName", false, "Arial");
});

答案 1 :(得分:20)

// Init TinyMCE
$('#content').tinymce({
    setup : function(ed)
    {
        ed.on('init', function() 
        {
            this.getDoc().body.style.fontSize = '12px';
            this.getDoc().body.style.fontFamily = 'serif';
        });
    }
});

答案 2 :(得分:9)

对于那些使用tinymce.init({初始化并且无法直接执行 Radius Kuntoro 答案的人。

我的初学者看起来像

tinymce.init({
            selector: '#editor',
            menubar: false,
            plugins: ['bbcode'],
            toolbar: 'undo redo | bold italic underline',    
            setup : function(ed)
            {
                ed.on('init', function() 
                {
                    this.getDoc().body.style.fontSize = '12';
                    this.getDoc().body.style.fontFamily = 'Arial';
                });
            },
        });    

答案 3 :(得分:2)

对于TinyMCE 4.6.3,这似乎是要走的路:

tinymce.init({
    setup: function (ed) {
        ed.on('init', function (e) {
            ed.execCommand("fontName", false, "Verdana");
        });
    }
});

答案 4 :(得分:2)

参考TinyMce网站,您可以在init函数中嵌入样式表,如下所示:

tinymce.init({
    content_css : 'path/to/style/sheet',
    body_class: 'define-class-name-without-dot-at-the-first'
});

它可以工作,你不需要设置任何东西。 check it out on tinyMCE webpage

答案 5 :(得分:1)

有些人将在TinyMCE EditorManager的范围内工作,它提供两个事件:AddEditorRemoveEditor。当生成新的TinyMCE实例并触发AddEditor时,编辑器实际上没有被初始化,因此调用getDoc()将返回null。

您需要做的是在其中创建一个init侦听器。

tinyMCE.EditorManager.on('AddEditor', function (event) {
    ... other code ...

    event.editor.on('init', function() {
      this.activeEditor.getDoc().body.style.fontSize = '12px';
      this.activeEditor.getDoc().body.style.fontFamily = 'Times New Roman';
    });

    ... other code ...
  }
});

从版本4.3.8开始,这至少是正确的

答案 6 :(得分:0)

我在tinymce 4.x中遇到了所有解决方案的困难 我无法改变fontsize和fontname。经过多次尝试后,我找到了解决方案。 首先我可以确认Jareds的回答,谢谢你!这两个命令在默认设置下不起作用:

tinymce.EditorManager.execCommand("fontName", false, "12px");
tinymce.EditorManager.execCommand("fonSize", false, "Arial");

默认的字体大小是" pt",而不是" px。"因此要么将显示的fontSize定义为" px"通过[fontsize_formats] [1]或只是用" pt"切换所需的大小。用tinymce.EditorManager.exec命令tinymce也不高兴。你必须移交整个字体系列,例如&arial,helvetica,sans-serif'。这些命令在我的网站上起作用:

tinymce.EditorManager.execCommand("fontName", false, "12pt");
tinymce.EditorManager.execCommand("fonSize", false, "arial, helvetica, sans-serif");

答案 7 :(得分:0)

这是答案,对我有用:

第1步:

在/ wp-content / themes / yourtheme /里面的主题目录的根目录中查找functions.php,打开它并在php标记后添加一行。

add_editor_style('自定义主编的style.css&#39);

第2步:

在同一目录中,创建一个名为custom-editor-style.css的文件,其中包含以下行

@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700); * {font-family:' Open Sans',sans-serif,Arial,Helvetica;} 继续,清除您的浏览器缓存,这就是您将看到的。

参考链接:https://blog.phi9.com/wordpress-editor-and-its-font/

Tony Ngo

答案 8 :(得分:0)

以上解决方案均不适合我。因此,我设法使用自定义逻辑对其进行了修复。

from sklearn.model_selection import train_test_split
A_train, A_test, y_train, y_test, index_train, index_test = \
    train_test_split(A, y, range(len(A)))

答案 9 :(得分:0)

我试过这样做。 我使用 TinyMce 5,在编辑器中生成了一个 body 标签。 在初始化编辑器时,我设置了 forced_root_block:'div',这意味着每次输入内容时,我的根元素将始终是一个 div。

 let tinyMceBody = tinymce.activeEditor.getBody();
      let divs = $(tinyMceBody).children('div');
      for(let i =0; i<divs.length; i++) {
        divs[i].style.fontFamily = 'Nunito';
}

所以我尝试捕获所有根元素并为它们设置默认样式。

当您编辑某些内容时,tinymce 会使用带有样式属性的 span 块包围您编辑的任何内容,因此您在编辑器中手动编辑的内容将被覆盖。如果您不在编辑器中编辑文本,则将保留我们附加在父元素 forced_root_block:'div' 上的默认样式。

尝试根据您的自定义要求制定解决方案。使用上述技术。似乎图书馆对此没有突出的内部支持。

附:-

tinymce.activeEditor.dom.setStyles(tinymce.activeEditor.dom.select('div'), {'font-family' : 'Nunito'});

适用于所有 divs ,但我只想申请 body 标签的第一级子级,而不是所有 divs(包括子级)。否则这也可能是一个解决方案。

答案 10 :(得分:-1)

这是答案。它对我有用:

第1步:

在/ wp-content / themes / yourtheme /里面的主题目录的根目录中查找functions.php,打开它并在php标记后添加一行。

add_editor_style(&#39;自定义主编的style.css&#39);

第2步:

在同一目录中,创建一个名为custom-editor-style.css的文件,其中包含以下行

@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700); * {font-family:&#39; Open Sans&#39;,sans-serif,Arial,Helvetica;} 继续,清除您的浏览器缓存,这就是您将看到的。

Tony Ngo

答案 11 :(得分:-1)

对于tinymce 5,您可以将整页插件添加到插件数组,然后添加新密钥 fullpage_default_font_family ,但我不知道它是否适用于旧版本。

enter image description here