特别是不要替换某些文本 - 不工作

时间:2009-06-17 11:20:13

标签: javascript sifr

首先,我正在使用sIFR3,r419(因为我无法访问闪存,所以无法升级...)。 我有一个网页,我用sIFR替换了所有现有的H1,H2和H3 - 这就像一个魅力。但我想使用YUI富文本编辑器。该编辑器的用处是它在工具栏中也使用了H1,H2和H3。这两件事结合起来,呃,非常难看:) 整个编辑器都在“yui-skin-sam”类的div中。我在sifr-config.js的顶部添加了sIFR WIKI的建议代码:

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)&gt; h2它有效。如果我将选择器设置为div:not(.yui-sam-skin)&gt; h2它不起作用 - 它仍然会更改为sifr'd文本。 我说它有点工作,因为脚本仍然将类.sifr-active应用于h2,这使得h2不可见所以我需要一些行到sifr-screen.css:

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

这感觉很烦人!在较新版本的sIFR3中是否解决了这个问题?

再次感谢!

2 个答案:

答案 0 :(得分:0)

我认为

div:not(.yui-sam-skin) h2应该工作......选择器的东西在sIFR之外,所以在以后的版本中没有任何改变。您可以尝试将选择器代码交换到jQuery:http://wiki.novemberborn.net/sifr3/parseSelector

答案 1 :(得分: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");