Какие HTML-атрибуты разрешены в посте Tumblr? (TinyMCE)
При создании публикации Tumblr и использовании опции редактора HTML, когда я добавляю к элементам определенные атрибуты HTML, редактор форматированного текста TinyMCE удаляет практически все.
то есть это:
<span class="something" data-random="foobar">
становится так:
<span class="something">
и на это не влияет
<span class="something" title="foobar">
Итак, могу ли я 1) отключить эту очистку (что нелепо, по крайней мере, как это в настоящее время реализовано) или 2) получить список всех допустимых атрибутов, чтобы я мог выбрать лучший семантический выбор?
3 ответа
Это тоже убивало меня. И поиск в Google для любого разработчика Tumblr поможет сложнее, чем "Как мне отредактировать цвет текста", оу, vey. Я бы никому этого не пожелал.
Пользователи Tumblr не имеют никакого контроля над html или js, которые запускают панель управления, и поэтому не могут добавлять файлы, которые изменяют конфигурацию TinyMCE. Но вы можете просто выключить его. На вкладке Dashboard ваших настроек Tumblr вы найдете раздел текстового редактора. Выбор обычного html или Markdown отключит TinyMCE и позволит вам публиковать формы, атрибуты данных и любые html, не входящие в белый список, к вашему сердцу.
Использование Markdown звучит как хорошая альтернатива, но я где-то читал, что у него проблемы со встроенными фреймами. Если это работает для вас, то это пушисто. Я еще не проверял это.
Однако, что вы можете сделать, если не хотите отказываться от 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, но посетитель или блог увидят красивую версию.
1) Зачистка элементов может быть отключена с помощью следующего параметра tinymce init cleanup:false,
2) Определение допустимых значений HTML по умолчанию можно найти здесь: http://www.tinymce.com/wiki.php/Configuration:valid_elements
Чтобы сохранить data-random
в качестве атрибута span вам нужно установить параметр init valid_children следующим образом
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]", //...