В частности, Dona € ™ t заменить определенный текст - не работает

Прежде всего, я использую sIFR3, r419 (я не могу обновить, так как у меня нет доступа к flash ...). У меня есть веб-страница, где я заменил все существующие H1, H2 и H3 на sIFR - это работает как шарм. Но я бы хотел использовать YUI Rich Text Editor. Дело с этим редактором в том, что он также использует H1, H2 и H3 в своей панели инструментов. Эти две вещи сочетаются, а, довольно уродливые :) Весь редактор находится в div с классом «yui-skin-sam». Я добавил предложенный код из WIKI sIFR в верхней части моего sifr-config.js:

parseSelector.pseudoClasses = {
'not': function(nodes, selector) {
var result = [];
each: for(var i = 0, node; i < nodes.length; i++) {
  node = nodes[i];
  var ignore = parseSelector(selector, node.parentNode);
  for(var j = 0; j < ignore.length; j++) {
    if(ignore[j] == node) continue each;
  }
  result.push(node);
}
return result;
}
}

И мой вопрос: что мне делать в sifr-config.js, чтобы выбрать все H1, H2, H3, кроме тех, которые находятся в div «.yui-sam-skin»? Или, точнее, как я должен указать селектор (ы)?

Заранее спасибо!

ZYBER

Добавлено: Если я сменил селектор с h2 на div: not (.yui-toolbar-titlebar)> h2, это вроде работает. Если я устанавливаю селектор в div: not (.yui-sam-skin)> h2, он НЕ работает - он все равно изменяется на текст sifr'd. Я сказал, что это работает, потому что сценарий по-прежнему применяет класс .sifr-active к этому h2, который делает h2 невидимым, поэтому мне нужно было несколько строк на sifr-screen.css:

.sIFR-active .yui-toolbar-titlebar h2 {
    visibility: visible;
    font-family: verdana, sans-serif;
}

И это раздражает! Эта проблема решена в новых версиях sIFR3?

Еще раз спасибо!

javascript,sifr,

1

Ответов: 2


0

div:not(.yui-sam-skin) h2должен работать, я думаю, что селекторный материал находится за пределами sIFR, поэтому в более поздних версиях ничего не изменится. Вы можете попробовать заменить код селектора, скажем, на jQuery: http://wiki.novemberborn.net/sifr3/parseSelector .


0 принят

Хорошо, поэтому я наконец придумал уродливое исправление. Наверх sifr-config.js:

function sIFRignore(selector) {
    var nodes = sIFR.dom.querySelectorAll(selector);
    for(var i=0; i < nodes.length; i++) {
        var node=nodes[i];
        node.style.visibility  = 'visible';
        node.style.fontFamily  = 'Verdana';
        sIFR.dom.addClass("sIFR-ignore", node);
    }
    return true;                
}

Мне нужно было добавить эту стилистику, потому что по крайней мере firefox все еще придавал ей стиль, так как он был назван .sIFR-active! Это известная ошибка, но эй, она работает (почти!).

Итак, перед sIFR.activate я добавил строки

sIFRignore(".yui-skin-sam * h2");
sIFRignore(".yui-skin-sam * h3");
JavaScript, SIFR,
Похожие вопросы