⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynamiccss.js

📁 太烦了
💻 JS
字号:
// Dynamic CSS (className) plugin for HTMLArea// Sponsored by http://www.systemconcept.de// Implementation by Holger Hees//// (c) systemconcept.de 2004// Distributed under the same terms as HTMLArea itself.// This notice MUST stay intact for use (see license.txt).function DynamicCSS(editor, args) {        this.editor = editor;	                var cfg = editor.config;	var toolbar = cfg.toolbar;	var self = this;	var i18n = DynamicCSS.I18N;        /*var cssArray=null;        var cssLength=0;        var lastTag=null;        var lastClass=null;*/        	var css_class = {		id         : "DynamicCSS-class",		tooltip       : i18n["DynamicCSSStyleTooltip"],		options    : {"":""},		action     : function(editor) { self.onSelect(editor, this); },		refresh    : function(editor) { self.updateValue(editor, this); }	};	cfg.registerDropdown(css_class);	toolbar[0].splice(0, 0, "separator");	toolbar[0].splice(0, 0, "DynamicCSS-class");	toolbar[0].splice(0, 0, "T[CSS]");};DynamicCSS.parseStyleSheet=function(editor){        var i18n = DynamicCSS.I18N;        iframe = editor._iframe.contentWindow.document;                cssArray=DynamicCSS.cssArray;        if(!cssArray) cssArray=new Array();                for(i=0;i<iframe.styleSheets.length;i++){            // Mozilla            if(HTMLArea.is_gecko){                try{                    cssArray=DynamicCSS.applyCSSRule(i18n,iframe.styleSheets[i].cssRules,cssArray);                }                catch(e){                    //alert(e);                }            }            // IE            else {                try{                    if(iframe.styleSheets[i].rules){                        cssArray=DynamicCSS.applyCSSRule(i18n,iframe.styleSheets[i].rules,cssArray);                    }                    // @import StyleSheets (IE)                    if(iframe.styleSheets[i].imports){                        for(j=0;j<iframe.styleSheets[i].imports.length;j++){                            cssArray=DynamicCSS.applyCSSRule(i18n,iframe.styleSheets[i].imports[j].rules,cssArray);                        }                    }                }                catch(e){                    //alert(e);                }            }        }        DynamicCSS.cssArray=cssArray;}DynamicCSS.applyCSSRule=function(i18n,cssRules,cssArray){    for(rule in cssRules){        // StyleRule        if(cssRules[rule].selectorText){            if(cssRules[rule].selectorText.search(/:+/)==-1){                                // split equal Styles (Mozilla-specific) e.q. head, body {border:0px}                // for ie not relevant. returns allways one element                cssElements = cssRules[rule].selectorText.split(",");                for(k=0;k<cssElements.length;k++){                    cssElement = cssElements[k].split(".");                                        tagName=cssElement[0].toLowerCase().trim();                    className=cssElement[1];                                                            if(!tagName) tagName='all';                    if(!cssArray[tagName]) cssArray[tagName]=new Array();                                        if(className){                        if(tagName=='all') cssName=className;                        else cssName='<'+className+'>';                    }                    else{                        className='none';                        if(tagName=='all') cssName=i18n["Default"];                        else cssName='<'+i18n["Default"]+'>';                    }                    cssArray[tagName][className]=cssName;                    DynamicCSS.cssLength++;                }            }        }        // ImportRule (Mozilla)        else if(cssRules[rule].styleSheet){            cssArray=DynamicCSS.applyCSSRule(i18n,cssRules[rule].styleSheet.cssRules,cssArray);        }    }    return cssArray;}DynamicCSS._pluginInfo = {	name          : "DynamicCSS",	version       : "1.5.2",	developer     : "Holger Hees",	developer_url : "http://www.systemconcept.de/",	c_owner       : "Holger Hees",	sponsor       : "System Concept GmbH",	sponsor_url   : "http://www.systemconcept.de/",	license       : "htmlArea"};DynamicCSS.prototype.onSelect = function(editor, obj) {    var tbobj = editor._toolbarObjects[obj.id];    var index = tbobj.element.selectedIndex;    var className = tbobj.element.value;            var parent = editor.getParentElement();        if(className!='none'){        parent.className=className;        DynamicCSS.lastClass=className;    }    else{        if(HTMLArea.is_gecko) parent.removeAttribute('class');        else parent.removeAttribute('className');    }    editor.updateToolbar();};/*DynamicCSS.prototype.onMode = function(mode) {    if(mode=='wysiwyg'){        // reparse possible changed css files        DynamicCSS.cssArray=null;        this.updateValue(this.editor,this.editor.config.customSelects["DynamicCSS-class"]);    }}*/DynamicCSS.prototype.reparseTimer = function(editor, obj, instance) {    // new attempt of rescan stylesheets in 1,2,4 and 8 second (e.g. for external css-files with longer initialisation)    if(DynamicCSS.parseCount<9){        setTimeout(function () {            DynamicCSS.cssLength=0;            DynamicCSS.parseStyleSheet(editor);            if(DynamicCSS.cssOldLength!=DynamicCSS.cssLength){                DynamicCSS.cssOldLength=DynamicCSS.cssLength;                DynamicCSS.lastClass=null;                instance.updateValue(editor, obj);            }            instance.reparseTimer(editor, obj, instance);        },DynamicCSS.parseCount*1000);        DynamicCSS.parseCount=DynamicCSS.parseCount*2;    }}DynamicCSS.prototype.updateValue = function(editor, obj) {        cssArray=DynamicCSS.cssArray;        // initial style init        if(!cssArray){            DynamicCSS.cssLength=0;            DynamicCSS.parseStyleSheet(editor);            cssArray=DynamicCSS.cssArray;            DynamicCSS.cssOldLength=DynamicCSS.cssLength;            DynamicCSS.parseCount=1;            this.reparseTimer(editor,obj,this);        }                var parent = editor.getParentElement();        var tagName = parent.tagName.toLowerCase();        var className = parent.className;                if(DynamicCSS.lastTag!=tagName || DynamicCSS.lastClass!=className){                    DynamicCSS.lastTag=tagName;            DynamicCSS.lastClass=className;                    var i18n = DynamicCSS.I18N;            var select = editor._toolbarObjects[obj.id].element;                        while(select.length>0){                select.options[select.length-1] = null;            }                        select.options[0]=new Option(i18n["Default"],'none');            if(cssArray){                // style class only allowed if parent tag is not body or editor is in fullpage mode                if(tagName!='body' || editor.config.fullPage){                    if(cssArray[tagName]){                        for(cssClass in cssArray[tagName]){                            if(cssClass=='none') select.options[0]=new Option(cssArray[tagName][cssClass],cssClass);                            else select.options[select.length]=new Option(cssArray[tagName][cssClass],cssClass);                        }                    }                                        if(cssArray['all']){                        for(cssClass in cssArray['all']){                            select.options[select.length]=new Option(cssArray['all'][cssClass],cssClass);                        }                    }                }                else if(cssArray[tagName] && cssArray[tagName]['none']) select.options[0]=new Option(cssArray[tagName]['none'],'none');            }                                            select.selectedIndex = 0;                        if (typeof className != "undefined" && /\S/.test(className)) {                var options = select.options;                for (var i = options.length; --i >= 0;) {                    var option = options[i];                    if (className == option.value) {                            select.selectedIndex = i;                            break;                    }                }                if(select.selectedIndex == 0){                    select.options[select.length]=new Option(i18n["Undefined"],className);                    select.selectedIndex=select.length-1;                }            }                                    if(select.length>1) select.disabled=false;            else select.disabled=true;        }};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -