ใƒ‘ใ‚ฟใƒผใƒณใฎใŸใจใˆ

-ใ“ใ‚“ใซใกใฏ*้ก”*ๅ‹ไบบใซๆ‰‹ใ‚’ๆŒฏใฃใฆ็ฌ‘้ก”ใงใ€‚

-ใƒฏใ‚ฆ๏ผ *ๅคงใใ้–‹ใ„ใŸ็›ฎใงๆ˜Žใ‚‹ใ„่ผใใง*ใ‚ขใ‚ทใƒฃใŠใฐใ•ใ‚“ใŒๅˆฐ็€ใ—ใพใ—ใŸ๏ผ

-ใฏใ„ใ€็งใฏใ‚ใชใŸใฎใŸใ‚ใซๆ–ฐใ—ใ„ใŠใจใŽ่ฉฑใ‚’ๆŒใฃใฆใ„ใพใ™*ๅบงใฃใฆใ€่…•ใง่ตคใกใ‚ƒใ‚“ใ‚’้€ฃใ‚Œใฆ่กŒใใพใ—ใŸ*่žใใŸใ„ใงใ™ใ‹๏ผŸ

-ใ‚‚ใกใ‚ใ‚“๏ผ *ๅฐ‘ใ—ๆฅใšใ‹ใ—ใใฆ็›ฎใ‚’ใใ‚‰ใ—ใŸ*ๅ”็ˆถใฏ็งใซใใฎใ‚ˆใ†ใชๆใ‚ใ—ใ„่ฉฑใ‚’่จ€ใฃใŸ...

-ใพใ‚ใ€็งใฎ่ฉฑใŒใ‚ใชใŸใ‚’ๆ€–ใŒใ‚‰ใชใ„ใ“ใจใ‚’้ก˜ใฃใฆใ„ใพใ™*ๅฝผใฎ้ซชใ‚’่ปฝใใŸใŸใใพใ—ใŸ*ๅฝผๅฅณใฏใ‚ใชใŸใซใƒ‘ใ‚ฟใƒผใƒณๅŒ–ใ•ใ‚ŒใŸๆ–นๆณ•ใง่€ƒใˆใ‚‹ๆ–นๆณ•ใ‚’ๆ•™ใˆใ‚‹ในใใงใ™ใ€‚

-ใˆ๏ผŸ *่ชค่งฃใ‹ใ‚‰ใญใ˜ใ‚ŒใŸ้ก”*ใฉใ†๏ผŸ

-M ...ไปŠใ€ใ‚ใชใŸใฏ็Ÿฅใฃใฆใ„ใพใ™*ใ‚ฆใ‚ฃใƒณใ‚ฏใ—ใฆใใ‚Œใ‚’ๆ‹พใ„ใพใ—ใŸ*ใ“ใ“ใงๅค‰ๆ•ฐใ‚’ๆ–‡ๅญ—ๅˆ—ใซๆŒฟๅ…ฅใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹ใจใ-ใ‚ใชใŸใฏไฝ•ใ‚’ใ—ใพใ™ใ‹๏ผŸ

-ใ•ใฆ... *่ฟ‘ใใซๆจชใŸใ‚ใฃใฆใ„ใ‚‹็ด™ใซ้‰›็ญ†ใจใƒใƒซใ‚ซใƒŒใƒซใ‚’ๅ–ใ‚Šใพใ—ใŸ*ใ“ใฎใ‚ˆใ†ใชใ‚‚ใฎ๏ผš

var query= 'xxx'

var resultCount= 512

var message= ' <kbd>' + query + '</kbd> : ' + resultCount






 โ€”   ? *  *

 โ€”   โ€ฆ *   ,     *

 โ€” ,   โ€ฆ *    *

<iframe src="javascript:alert('ahtung')"></iframe>





 โ€” ,   *  *

var message= ' <kbd>' + query.escapeHTML() + '</kbd> : ' + resultCount





 โ€” โ€ฆ * *    โ€”    ,   ..,        ?

 โ€” โ€ฆ *      *    :

var texts= [ ' <kbd>', '</kbd> : ' ]

var message= texts[0] + query.escapeHTML() + texts[1] + resultCount






 โ€”     texts[n],    ? *  ,   ,  * ,    :

var template= TT.template( ' <kbd>{0}</kbd> : {1}' )

var message= template([ query.escapeHTML(), resultCount ])






 โ€”  * * โ€ฆ

 โ€”      โ€”  *   *  :

var template= TT.template( ' <kbd>{query}</kbd> : {count}' )

var message= template({ query: query.escapeHTML(), count: resultCount })






 โ€” ! * *  !

 โ€” ! *  *  :

var template= TT.html( ' <kbd>{query}</kbd> : {count}' )

var message= template({ query: query, count: resultCount })






 โ€”   โ€ฆ *   *        ?!7

 โ€” ! *   * , ,     :

var message= template({ query: TT.value( highLightedQuery ), count: resultCount })





 โ€”     *  * TT.value?

 โ€”    * ,    *    :

TT.value= function( data ){

        return function( ){

                return data

        }

}






 โ€”  ,    , ,   ,      ? * ,   * ?

 โ€” ! * * , ,   :

TT.pipe= function( list ){

        if( !list ) list= []

        var len= list.length

        return function( data ){

                for( var i= 0; i < len; ++i ) data= list[ i ]( data )

                return data

        }

}






 โ€”   ? *    *

 โ€”          *,      * , ,  :

var text= decodeURIComponent( encodeURIComponent( text ) )

var text= TT.pipe([ encodeURIComponent, decodeURIComponent ])( text )






 โ€” * *  -!

 โ€”   ! **  :

TT.template= new function( ){

        var searcher= /((?:[^\{\}]|\{\{|\}\})*)(?:\{|$)|([^\{\}]*)(?:\})/g

        return function( str, filter ){

                if( !filter ) filter= TT.pipe()

                var parts= []

                String( str ).replace

                (       searcher

                ,       function( str, val, sel ){

                                if( sel !== void 0 ){

                                        parts.push( function( data ){

                                                data= data[ sel ]

                                                switch( typeof data ){

                                                        case 'undefined': return '{' + sel + '}'

                                                        case 'function': return data()

                                                        default: return filter( data )

                                                }

                                        })

                                } else if( val ){

                                        val= val.split( '{{' ).join( '{' ).split( '}}' ).join( '}' )

                                        parts.push( TT.value( val ) )

                                }

                        }

                )

                return TT.concater( parts )

        }

}






 โ€” *   *     !

 โ€”   ! *  *       :

TT.uri= function( tpl ){

        return TT.template( tpl, TT.uri.encoder() )

}

TT.uri.encoder= TT.value( encodeURIComponent )

TT.uri.decoder= TT.value( decodeURIComponent )






 โ€”  ? *,  *

 โ€”    URI *    * :

var searchURI= TT.uri( '/search/?q={query}&count={count}' )

location.href= searchURI({ query: '&&&', count: 10 })






 โ€” โ€ฆ * *    html?

 โ€”    :

TT.html= function( tpl ){

        return TT.template( tpl, TT.html.encoder() )

}

TT.html.encoder= new function( ){

        var parent= document.createElement('div')

        var child= parent.appendChild( document.createTextNode( '' ) )

        return TT.value( function( data ){

                child.nodeValue= data

                return parent.innerHTML.split( '"' ).join( '&quot;' ).split( "'" ).join( '&apos;' )

        })

}

TT.html.decoder= new function( ){

        var parent= document.createElement('div')

        return TT.value( function( data ){

                parent.innerHTML= data

                return parent.firstChild.nodeValue

        })

}






 โ€” !

 โ€”      ! * *  html     ,    HTMLNode   :

TT.dom= function( tpl ){

        return TT.pipe([ TT.html( tpl ), TT.dom.parser() ])

}

TT.dom.parser= new function(){

        var parent= document.createElement( 'div' )

        return TT.value( function( html ){

                parent.innerHTML= html

                var childs= parent.childNodes

                if( childs.length === 1 ) return childs[0]

                var fragment= document.createDocumentFragment()

                while( childs[0] ) fragment.appendChild( childs[0] )

                return fragment

        })

}

TT.dom.serializer= new function(){

        var parent= document.createElement( 'div' )

        var child= parent.appendChild( document.createTextNode( '' ) )

        return TT.value( function( node ){

                parent.replaceChild( node.cloneNode( true ), parent.firstChild )

                return parent.innerHTML

        })

}






 โ€”   ? *   *

 โ€”    *   *

var link= TT.dom( '<a href="{uri}">{title}</a>' )({ uri: '/', title: ' ' }) // HTMLAnchorElement

var userName= TT.dom( '<b>{head}</b>{tail}' )({ head: 'T', tail: 'enshi' }) // HTMLFragment






 โ€” โ€ฆ *  *   โ€ฆ



______________________

ยฉ SoftCoder.ru



All Articles