【问题标题】:What HTML attributes are allowed on a Tumblr post? (tinymce)Tumblr 帖子中允许使用哪些 HTML 属性? (小)
【发布时间】:2011-12-01 19:38:23
【问题描述】:

在创建 Tumblr 帖子并使用 HTML 编辑器选项时,当我向元素添加特定的 HTML 属性时,TinyMCE 富文本编辑器几乎会删除所有内容。

即这个:

<span class="something" data-random="foobar">

变成这样:

<span class="something">

这不受影响:

<span class="something" title="foobar">

那么我可以 1) 禁用此清理(这很荒谬,至少目前是如何实现的)或 2) 获取所有有效属性的列表,以便我可以选择最佳语义选择?

【问题讨论】:

    标签: tinymce tumblr


    【解决方案1】:

    这也让我很生气。并且在谷歌上搜索任何比“我如何编辑文本颜色”更复杂的 tumblr 开发帮助,哎呀。我不希望它在任何人身上。

    Tumblr 用户无法控制运行控制面板的 html 或 js,因此无法添加任何更改 TinyMCE 配置的文件。但你可以把它关掉。在Tumblr settingsDashboard 标签中,您会找到Text Editor 部分。选择纯 html 或 Markdown 将停用 TinyMCE,并允许您将表单、数据属性和任何非白名单 html 发布到您心中的内容。

    【讨论】:

    • 可以说这些都没有找到正确的答案——data-random: foobar 在显示在破折号上时仍会从帖子中删除,因此使用 style="white-space: pre-line;" 等样式设置可以软化 &lt;pre&gt; 上的换行元素是不可能的。如果有人拥有允许的仪表板 HTML,那将很有用
    【解决方案2】:

    1) 可以使用以下tinymce init 参数cleanup:false,关闭剥离元素

    2) 有效 html 元素的默认定义可以在这里找到: http://www.tinymce.com/wiki.php/Configuration:valid_elements

    为了将data-random 保留为 span 的属性,您需要按如下方式设置valid_children init parameter

    valid_children: "body[p|ol|ul|hr]" +
    ",span[a|b|i|u|sup|sub|img|data-random|#text]" +
    ",a[span|b|i|u|sup|sub|img|#text]", //...
    

    【讨论】:

    • 感谢您提供信息,但我在帖子中提到我正在使用 Tumblr 创建帖子,所以我很确定我无权更改 TinyMCE 属性。我不正确吗?如果是这样,我应该在哪里设置这些属性?
    • 我相信你可以以某种方式设置 tinymce 属性,但我不熟悉 tumblr,所以我不知道如何设置。我建议你仔细看看 tinymce init 代码是如何执行的。
    • Tumblr 没有让用户对控制面板 html 或 js 进行任何控制,因此很遗憾您无法设置这些参数。
    【解决方案3】:

    使用 Markdown 听起来是一个不错的选择,但我在某处读到它在嵌入 iframe 方面存在问题。如果它对你有用,那就是蓬松的。我还没有测试过。

    但是,如果您不想放弃 TinyMCE,可以采取以下措施。

    tinymce.activeEditor.schema.setValidElements('*[*]')
    

    这告诉活动编辑器现在所有元素都是有效的。

    不幸的是,一旦你关闭并重新打开编辑窗口,新启动的编辑器就会再次删除它们,所以我写了一个小Greasemonkey 脚本,在编辑器初始化时自动设置valid_elements。

    // ==UserScript==
    // @name        Lift TinyMCE tag restrictions
    // @namespace   http://claviger.net
    // @include     *.tumblr.com/*
    // @version     1
    // @grant       none
    // ==/UserScript==
    
    if (typeof tinyMCE !== 'undefined') {
        tinyMCE.onAddEditor.add(function(mgr, ed) {
            ed.settings.valid_elements = '*[*]';
        });
    }
    

    它对我来说效果很好,但我认为在极少数情况下,Greasemonkey 脚本和 TinyMCE 的实际初始化之间会出现竞争情况。我认为后者有时必须在第一个之前运行并阻止我的小技巧。但是,在我重新加载页面的最后二十次左右没有发生这种情况,如果发生这种情况,只需重新加载而不保存。 (也许有人知道如何避免这种情况?)

    顺便说一句,class 属性似乎没有被剥离,因此作为另一种选择,您可以在博客的主题中定义类似 .alignleft 的内容并将其用于图像。然后它在 TinyMCE 中看起来不会太多,但访问者或博客会看到漂亮的版本。

    【讨论】:

      猜你喜欢
      • 2010-10-29
      • 2013-11-15
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 2011-10-30
      • 1970-01-01
      相关资源
      最近更新 更多