Changeset 27432

Show
Ignore:
Timestamp:
12/26/08 11:53:10 (4 years ago)
Author:
drry
Message:
  • fixed and removed regexes.
  • removed the leading 1 byte (0xFEFF).
  • et cetera.
Location:
lang/javascript/sisso
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/sisso/sisso.js

    r27405 r27432  
    1 /* 
     1/** 
    22 * sisso.js - 質素なWeb制作のためのJS 
    33 * 
     
    77 * Date: 2008-12-25 
    88 * @author kyo_ago <http://tech.kayac.com/archive/iepngfix-library-sisso-js.html> 
    9  * @version 1.0.0 
     9 * @version 1.0.1 
    1010 * 
    1111 * thanks from 
     
    3636                        var elems = $d.evaluate("descendant::*[@class=" + cname + " or contains(concat(' ', @class, ' '), ' " + cname + " ')]", $d, null, 7, null); 
    3737                        var result = []; 
    38                         for (var i = 0, l = elems.snapshotLength; i < l; i ++) { 
    39                                 result.push(elems.snapshotItem(i)); 
    40                         } 
     38                        for (var i = 0, l = elems.snapshotLength; i < l; result.push(elems.snapshotItem(i++))); 
    4139                        return result; 
    4240                }; 
    4341                var self_cname = self.overClass; 
    44                 var reg = new RegExp('\\s' + self_cname + '\\s'); 
     42                var reg = new RegExp('[ \\n\\r\\t]' + self_cname + '[ \\n\\r\\t]'); 
    4543                return function (cname) { 
    4644                        var elems = $d.body.getElementsByTagName('*'); 
    4745                        var result = []; 
    48                         for (var i = 0, l = elems.length; i < l; i++) { 
     46                        for (var i = 0, l = elems.length; i < l; ++i) { 
    4947                                var elem = elems[i]; 
    5048                                if (elem.className.indexOf(self_cname) == -1) continue; 
     
    5957                if (elem.src) return elem.src; 
    6058                src = (elem.currentStyle || $d.defaultView.getComputedStyle(elem, '')).backgroundImage; 
    61                 var url = src.match(/^url[("']+(.*\.png)[)"']+$/i); 
    62                 return url ? url.pop() : src; 
     59                var url = src.match(/^url\((["']?)(.*\.png)\1\)$/i) || [src]; 
     60                return url.pop(); 
    6361        }; 
    6462 
     
    7068 
    7169        self.replace_over = function (src) { 
    72                 if (!src.match(/_o(\.\w+)/)) src = src.replace(/(\.\w+)$/, '_o$1'); 
    73                 return src; 
     70                return src.replace(/(?:_o)?(\.\w+)$/, '_o$1'); 
    7471        }; 
    7572 
     
    10097                }); 
    10198                self.observe(elem, 'mouseout', function () { 
    102                         elem.style.backgroundImage = 'url(' + src + ')';; 
     99                        elem.style.backgroundImage = 'url(' + src + ')'; 
    103100                }); 
    104101        }; 
     
    108105                        _hover(self.get_elems(self.overClass)); 
    109106                        function _hover (elems) { 
    110                                 for (var i = 0, l = elems.length; i < l; ++i) { 
    111                                         self.hover(elems[i]); 
    112                                 }; 
    113                         }; 
     107                                for (var i = 0, l = elems.length; i < l; self.hover(elems[i++])); 
     108                        } 
    114109                }); 
    115110        }; 
    116111 
    117         if (!navigator.userAgent.match(/MSIE\s+(5\.5|6\.)/)) { 
     112        if (!/^Mozilla 4\.0 \(compatible; MSIE (?:5\.5|6\.)/.test(navigator.userAgent)) { 
    118113                if (!self.noRoll) self.exec_hover(); 
    119114                return; 
    120         }; 
     115        } 
    121116 
    122117//----------------------------------- 
     
    126121        self.blank = 'http://tech.kayac.com/data/iepngfix-library-sisso-js/blank.gif'; 
    127122        self.elems = []; 
    128         self.eid = '_'+name_space+'_id_'+(new Date).getTime(); 
     123        self.eid = '_' + name_space + '_id_' + (new Date).getTime(); 
    129124 
    130125        self.store = function (elem, val) { 
     
    139134                        src = self.get_src(elem); 
    140135                        self.store(elem, src); 
    141                 }; 
     136                } 
    142137                var over = self.replace_over(src); 
    143138                return elem.src ? self.add_src_over(elem, src, over) : self.add_bg_over(elem, src, over); 
     
    163158                        src = self.get_src(elem); 
    164159                        self.store(elem, src); 
    165                 }; 
     160                } 
    166161                self.swap(elem, src); 
    167162                if (!elem.src) self.fix_bg_elem(elem); 
     
    177172                elem.style.backgroundImage = 'none'; 
    178173                self.set_pos(elem); 
    179                 (elem.tagName == 'A') && (elem.style.cursor = elem.style.cursor || 'pointer'); 
     174                (elem..toUpperCase().tagName == 'A') && (elem.style.cursor = elem.style.cursor || 'pointer'); 
    180175        }; 
    181176 
    182177        self.set_pos = function (elem) { 
    183178                var nodes = elem.childNodes; 
    184                 for (var i = 0, n = nodes.length; i < n; i++) { 
     179                for (var i = 0, n = nodes.length; i < n; ++i) { 
    185180                        var child = nodes[i]; 
    186181                        if (child.hasChildNodes()) self.set_pos(child); 
     
    196191                if (!src) return; 
    197192                if (src == self.blank) return; 
    198                 if (!(/\.png$/i).test(src)) return; 
     193                if (!/\.png$/.test(src.toLowerCase())) return; 
    199194                self.set_width(elem); 
    200195                if (elem.src) elem.src = self.blank; 
    201                 var sizing = elem.className.match(/sizing[\-_]?method[\-_]?(\w+)/i); 
    202                 sizing = (sizing ? sizing.pop() : 'scale').toLowerCase(); 
    203                 elem.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '",sizingMethod="'+sizing+'");'; 
     196                var sizing = elem.className.match(/sizing[-_]?method[-_]?(\w+)/i); 
     197                sizing = sizing ? sizing.pop().toLowerCase() : 'scale'; 
     198                elem.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '",sizingMethod="' + sizing + '");'; 
    204199        }; 
    205200 
    206201        self.exec_pngfix = function () { 
    207                 var exp = 'expression('+name_space+'.fix(this));'; 
     202                var exp = 'expression(' + name_space + '.fix(this));'; 
    208203                var div = $d.createElement('div'); 
    209204                div.innerHTML = ([ 
    210205                        'div<div><style type="text/css">', 
    211                                 'img, input { behavior : '+exp+' };', 
    212                                 '.bgpng { behavior : '+exp+' };', 
     206                                'img, input { behavior : ' + exp + ' };', 
     207                                '.bgpng { behavior : ' + exp + ' };', 
    213208                        '</style></div>' 
    214209                ]).join(''); 
    215                 var head = $d.getElementsByTagName('head')[0]; 
    216                 var style = div.getElementsByTagName('style')[0]; 
    217                 head.appendChild(style); 
     210                $d.getElementsByTagName('head')[0].appendChild(div.getElementsByTagName('style')[0]); 
    218211        }; 
    219212 
  • lang/javascript/sisso/sisso.min.js

    r27405 r27432  
    1 /* 
     1/** 
    22 * sisso.min.js - 質素なWeb制作のためのJS 
    33 * 
     
    77 * Date: 2008-12-25 
    88 * @author kyo_ago <http://tech.kayac.com/archive/iepngfix-library-sisso-js.html> 
    9  * @version 1.0.0 
     9 * @version 1.0.1 
    1010 * 
    1111 * thanks from 
     
    1414 *   http://kyosuke.jp/portfolio/javascript/yuga.html 
    1515 */ 
    16 ;new function(){var c="Sisso";var a=window[c]||{};window[c]=a;a.overClass=a.overClass||"btn";a.noRoll=a.noRoll||false;a.noFix=a.noFix||false;var d=window.jQuery;var b=document;a.get_elems=(function(){if(b.getElementsByClassName){return function(g){return b.getElementsByClassName(g)}}if(b.querySelectorAll){return function(g){return b.querySelectorAll("*."+g)}}if(b.evaluate){return function(k){var j=b.evaluate("descendant::*[@class="+k+" or contains(concat(' ', @class, ' '), ' "+k+" ')]",b,null,7,null);var g=[];for(var m=0,h=j.snapshotLength;m<h;m++){g.push(j.snapshotItem(m))}return g}}var f=a.overClass;var e=new RegExp("\\s"+f+"\\s");return function(k){var j=b.body.getElementsByTagName("*");var g=[];for(var m=0,h=j.length;m<h;m++){var n=j[m];if(n.className.indexOf(f)==-1){continue}if(!e.test(" "+n.className+" ")){continue}g.push(n)}return g}})();a.get_src=function(f){if(f.src){return f.src}src=(f.currentStyle||b.defaultView.getComputedStyle(f,"")).backgroundImage;var e=src.match(/^url[("']+(.*\.png)[)"']+$/i);return e?e.pop():src};a.hover=function(e){var g=a.get_src(e);var f=a.replace_over(g);return e.src?a.add_src_over(e,g,f):a.add_bg_over(e,g,f)};a.replace_over=function(e){if(!e.match(/_o(\.\w+)/)){e=e.replace(/(\.\w+)$/,"_o$1")}return e};a.observe=d?function(g,e,f){d(g).bind(e+"."+c,f)}:window.addEventListener?function(g,e,f){g.addEventListener(e,f,false)}:function(g,e,f){g.attachEvent("on"+e,function(){f&&f.call(g,window.event)})};a.add_src_over=function(f,h,g){var e=new Image();e.src=g;a.observe(f,"mouseover",function(){f.src=g});a.observe(f,"mouseout",function(){f.src=h})};a.add_bg_over=function(f,h,g){var e=new Image();e.src=g;a.observe(f,"mouseover",function(){f.style.backgroundImage="url("+g+")"});a.observe(f,"mouseout",function(){f.style.backgroundImage="url("+h+")"})};a.exec_hover=function(){a.observe(window,"load",function(){e(a.get_elems(a.overClass));function e(g){for(var h=0,f=g.length;h<f;++h){a.hover(g[h])}}})};if(!navigator.userAgent.match(/MSIE\s+(5\.5|6\.)/)){if(!a.noRoll){a.exec_hover()}return}a.blank="http://tech.kayac.com/data/iepngfix-library-sisso-js/blank.gif";a.elems=[];a.eid="_"+c+"_id_"+(new Date).getTime();a.store=function(e,f){var g=e[a.eid];if(g!==undefined){g=e[a.eid]=a.elems.length}return f?(a.elems[g]=f):a.elems[g]};a.hover=function(e){var g=a.store(e);if(!g){g=a.get_src(e);a.store(e,g)}var f=a.replace_over(g);return e.src?a.add_src_over(e,g,f):a.add_bg_over(e,g,f)};a.add_src_over=function(f,h,g){var e=new Image();e.src=g;a.observe(f,"mouseover",function(){a.swap(f,g)});a.observe(f,"mouseout",function(){a.swap(f,h)})};a.add_bg_over=function(f,h,g){var e=new Image();e.src=g;a.observe(f,"mouseover",function(){a.swap(f,g)});a.observe(f,"mouseout",function(){a.swap(f,h)})};a.fix=function(e){var f=a.store(e);if(!f){f=a.get_src(e);a.store(e,f)}a.swap(e,f);if(!e.src){a.fix_bg_elem(e)}};a.set_width=function(e){var f=e.currentStyle;if(f.width!="auto"||f.height!="auto"){return}e.style.width=e.offsetWidth+"px"};a.fix_bg_elem=function(e){e.style.backgroundImage="none";a.set_pos(e);(e.tagName=="A")&&(e.style.cursor=e.style.cursor||"pointer")};a.set_pos=function(h){var e=h.childNodes;for(var f=0,k=e.length;f<k;f++){var j=e[f];if(j.hasChildNodes()){a.set_pos(j)}if(!j.style){return}var g=j.style;g.position=g.position||"relative"}};a.swap=function(f,g){f.runtimeStyle.behavior="none";if(!g){g=f.src}if(!g){return}if(g==a.blank){return}if(!(/\.png$/i).test(g)){return}a.set_width(f);if(f.src){f.src=a.blank}var e=f.className.match(/sizing[\-_]?method[\-_]?(\w+)/i);e=(e?e.pop():"scale").toLowerCase();f.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+g+'",sizingMethod="'+e+'");'};a.exec_pngfix=function(){var g="expression("+c+".fix(this));";var h=b.createElement("div");h.innerHTML=(['div<div><style type="text/css">',"img, input { behavior : "+g+" };",".bgpng { behavior : "+g+" };","</style></div>"]).join("");var e=b.getElementsByTagName("head")[0];var f=h.getElementsByTagName("style")[0];e.appendChild(f);if(!a.noRoll){a.exec_hover()}if(!a.noFix){a.exec_pngfix()}}; 
     16;new function(){var c="Sisso";var a=window[c]||{};window[c]=a;a.overClass=a.overClass||"btn";a.noRoll=a.noRoll||false;a.noFix=a.noFix||false;var d=window.jQuery;var b=document;a.get_elems=(function(){if(b.getElementsByClassName){return function(g){return b.getElementsByClassName(g)}}if(b.querySelectorAll){return function(g){return b.querySelectorAll("*."+g)}}if(b.evaluate){return function(k){var j=b.evaluate("descendant::*[@class="+k+" or contains(concat(' ', @class, ' '), ' "+k+" ')]",b,null,7,null);var g=[];for(var m=0,h=j.snapshotLength;m<h;g.push(j.snapshotItem(m++))){}return g}}var f=a.overClass;var e=new RegExp("[ \\n\\r\\t]"+f+"[ \\n\\r\\t]");return function(k){var j=b.body.getElementsByTagName("*");var g=[];for(var m=0,h=j.length;m<h;++m){var n=j[m];if(n.className.indexOf(f)==-1){continue}if(!e.test(" "+n.className+" ")){continue}g.push(n)}return g}})();a.get_src=function(f){if(f.src){return f.src}src=(f.currentStyle||b.defaultView.getComputedStyle(f,"")).backgroundImage;var e=src.match(/^url\((["']?)(.*\.png)\1\)$/i)||[src];return e.pop()};a.hover=function(e){var g=a.get_src(e);var f=a.replace_over(g);return e.src?a.add_src_over(e,g,f):a.add_bg_over(e,g,f)};a.replace_over=function(e){return e.replace(/(?:_o)?(\.\w+)$/,"_o$1")};a.observe=d?function(g,e,f){d(g).bind(e+"."+c,f)}:window.addEventListener?function(g,e,f){g.addEventListener(e,f,false)}:function(g,e,f){g.attachEvent("on"+e,function(){f&&f.call(g,window.event)})};a.add_src_over=function(f,h,g){var e=new Image();e.src=g;a.observe(f,"mouseover",function(){f.src=g});a.observe(f,"mouseout",function(){f.src=h})};a.add_bg_over=function(f,h,g){var e=new Image();e.src=g;a.observe(f,"mouseover",function(){f.style.backgroundImage="url("+g+")"});a.observe(f,"mouseout",function(){f.style.backgroundImage="url("+h+")"})};a.exec_hover=function(){a.observe(window,"load",function(){e(a.get_elems(a.overClass));function e(g){for(var h=0,f=g.length;h<f;a.hover(g[h++])){}}})};if(!/^Mozilla 4\.0 \(compatible; MSIE (?:5\.5|6\.)/.test(navigator.userAgent)){if(!a.noRoll){a.exec_hover()}return}a.blank="http://tech.kayac.com/data/iepngfix-library-sisso-js/blank.gif";a.elems=[];a.eid="_"+c+"_id_"+(new Date).getTime();a.store=function(e,f){var g=e[a.eid];if(g!==undefined){g=e[a.eid]=a.elems.length}return f?(a.elems[g]=f):a.elems[g]};a.hover=function(e){var g=a.store(e);if(!g){g=a.get_src(e);a.store(e,g)}var f=a.replace_over(g);return e.src?a.add_src_over(e,g,f):a.add_bg_over(e,g,f)};a.add_src_over=function(f,h,g){var e=new Image();e.src=g;a.observe(f,"mouseover",function(){a.swap(f,g)});a.observe(f,"mouseout",function(){a.swap(f,h)})};a.add_bg_over=function(f,h,g){var e=new Image();e.src=g;a.observe(f,"mouseover",function(){a.swap(f,g)});a.observe(f,"mouseout",function(){a.swap(f,h)})};a.fix=function(e){var f=a.store(e);if(!f){f=a.get_src(e);a.store(e,f)}a.swap(e,f);if(!e.src){a.fix_bg_elem(e)}};a.set_width=function(e){var f=e.currentStyle;if(f.width!="auto"||f.height!="auto"){return}e.style.width=e.offsetWidth+"px"};a.fix_bg_elem=function(e){e.style.backgroundImage="none";a.set_pos(e);(e..toUpperCase().tagName=="A")&&(e.style.cursor=e.style.cursor||"pointer")};a.set_pos=function(h){var e=h.childNodes;for(var f=0,k=e.length;f<k;++f){var j=e[f];if(j.hasChildNodes()){a.set_pos(j)}if(!j.style){return}var g=j.style;g.position=g.position||"relative"}};a.swap=function(f,g){f.runtimeStyle.behavior="none";if(!g){g=f.src}if(!g){return}if(g==a.blank){return}if(!/\.png$/.test(g.toLowerCase())){return}a.set_width(f);if(f.src){f.src=a.blank}var e=f.className.match(/sizing[-_]?method[-_]?(\w+)/i);e=e?e.pop().toLowerCase():"scale";f.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+g+'",sizingMethod="'+e+'");'};a.exec_pngfix=function(){var e="expression("+c+".fix(this));";var f=b.createElement("div");f.innerHTML=(['div<div><style type="text/css">',"img, input { behavior : "+e+" };",".bgpng { behavior : "+e+" };","</style></div>"]).join("");b.getElementsByTagName("head")[0].appendChild(f.getElementsByTagName("style")[0])};if(!a.noRoll){a.exec_hover()}if(!a.noFix){a.exec_pngfix()}};