3

目前,我正在开发一个使用自定义格式的插件。不幸的是,我不能使用类,因为输出 HTML必须使用内联样式。

我正在使用如下声明:

    a.formatter.register("dotted", {
        inline : 'span', 
        styles : {
            borderStyle : 'dotted', 
            borderWidth : '1px',
        }
    });
    a.formatter.register("dashed", {
            inline : 'span', 
            styles : {
                borderStyle : 'dashed', 
                borderWidth : '1px',
            }
    });

问题一:我想使用相互影响的格式。我的意思是:

用户点击选项“虚线边框” - >如果选择已经设置了边框宽度,请不要触摸。如果没有设置,设置border-width:1px;-> 无论当前设置什么,覆盖边框样式:虚线;

用户单击选项“虚线边框”-> 如果选择已经设置了边框宽度,请不要触摸。如果没有设置,设置border-width:1px;-> 无论当前设置什么,覆盖border-style: dotted;

用户单击“粗边框”-> 如果已设置边框样式,请勿触摸。如果没有设置,设置border-style:solid; -> 不管设置什么,覆盖border-width: 3px;

如何读取和过滤用于当前选择的当前 CSS 样式?在我的示例中,a 是编辑器的实例,在单击按钮时传递给函数。请不要将我的问题与这个问题混淆,因为它不是复制和粘贴操作,所以我不能在这里使用这些对象。

问题二:如何删除这些样式,因为它可能是不同组合的混合?

目前,我必须解决的唯一想法是创建一个包含所有可能值的数组并循环遍历这些值,例如

for (var i = 0; i < value.length; i++) {
    var cssobj = {
        inline : 'span', 
        styles : {
        }
    }

    eval("cssobj.styles." + cssattr + "= \"" + value[i] + "\"");
    a.formatter.register("tempformat", cssobj);
    a.formatter.remove("tempformat");
    a.formatter.unregister("tempformat");
}

我发现这是一个非常丑陋的解决方案,而且性能也不是很好。

还有其他想法吗?

4

0 回答 0