У меня тоже были проблемы с примером YouTube. Вот как я разрешил теги сценариев, но только для видеопроигрывателя Ooyala:
- Добавить 'script' к: elements
- Добавить 'script' => ['src'] к: атрибутам
- Использование: transformers => lambda {| env | далее, если env [: имя_узла] == 'скрипт'; кроме случаев (env [: узел] ['src'] && env [: узел] ['src']. include? ('http://player.ooyala.com')); Sanitize.clean_node! (env [: узел], {}); конец; ноль}
Я также значительно исправил ситуацию, создав собственную конфигурацию инициализаторов:
class Sanitize
module Config
ULTRARELAXED = {
:elements => [
'a', 'b', 'blockquote', 'br', 'caption', 'cite', 'code', 'col',
'colgroup', 'dd', 'dl', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
'i', 'img', 'li', 'ol', 'p', 'pre', 'q', 'small', 'strike', 'strong',
'sub', 'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'u',
'ul', 'object', 'embed', 'param', 'iframe', 'script'],
:attributes => {
'a' => ['href', 'title'],
'blockquote' => ['cite'],
'col' => ['span', 'width'],
'colgroup' => ['span', 'width'],
'img' => ['align', 'alt', 'height', 'src', 'title', 'width'],
'ol' => ['start', 'type'],
'q' => ['cite'],
'table' => ['summary', 'width'],
'td' => ['abbr', 'axis', 'colspan', 'rowspan', 'width'],
'th' => ['abbr', 'axis', 'colspan', 'rowspan', 'scope',
'width'],
'ul' => ['type'],
'object' => ['width', 'height'],
'param' => ['name', 'value'],
'embed' => ['src', 'type', 'allowscriptaccess', 'allowfullscreen', 'width', 'height', 'flashvars'],
'iframe' => ['src', 'width', 'height', 'frameborder'],
'script' => ['src']
},
:protocols => {
'a' => {'href' => ['ftp', 'http', 'https', 'mailto', :relative]},
'blockquote' => {'cite' => ['http', 'https', :relative]},
'img' => {'src' => ['http', 'https', :relative]},
'q' => {'cite' => ['http', 'https', :relative]}
},
:transformers => lambda { |env| next unless env[:node_name] == 'script'; unless (env[:node]['src'] && env[:node]['src'].include?('http://player.ooyala.com')); Sanitize.clean_node!(env[:node], {}); end; nil }
}
end
end
Sanitize.clean(html, Sanitize::Config::ULTRARELAXED)