HTML代码
< link rel= "stylesheet" type= "text/css" href= "style.css" / >
< / head>
< body>
< div id= "container" >
< textarea id= "write" rows= "6" cols= "60" > < / textarea>
< ul id= "keyboard" >
< li class = "symbol" > < span class = "off" > `< / span> < span class = "on" > ~ < / span> < / li>
< li class = "symbol" > < span class = "off" > 1 < / span> < span class = "on" > ! < / span> < / li>
< li class = "symbol" > < span class = "off" > 2 < / span> < span class = "on" > @< / span> < / li>
< li class = "symbol" > < span class = "off" > 3 < / span> < span class = "on" > #< / span> < / li>
< li class = "symbol" > < span class = "off" > 4 < / span> < span class = "on" > $< / span> < / li>
< li class = "symbol" > < span class = "off" > 5 < / span> < span class = "on" > % < / span> < / li>
< li class = "symbol" > < span class = "off" > 6 < / span> < span class = "on" > ^ < / span> < / li>
< li class = "symbol" > < span class = "off" > 7 < / span> < span class = "on" > & amp; < / span> < / li>
< li class = "symbol" > < span class = "off" > 8 < / span> < span class = "on" > * < / span> < / li>
< li class = "symbol" > < span class = "off" > 9 < / span> < span class = "on" > ( < / span> < / li>
< li class = "symbol" > < span class = "off" > 0 < / span> < span class = "on" > ) < / span> < / li>
< li class = "symbol" > < span class = "off" > - < / span> < span class = "on" > _< / span> < / li>
< li class = "symbol" > < span class = "off" >= < / span> < span class = "on" > + < / span> < / li>
< li class = "delete lastitem" > delete < / li>
< li class = "tab" > tab< / li>
< li class = "letter" > q< / li>
< li class = "letter" > w< / li>
< li class = "letter" > e< / li>
< li class = "letter" > r< / li>
< li class = "letter" > t< / li>
< li class = "letter" > y< / li>
< li class = "letter" > u< / li>
< li class = "letter" > i< / li>
< li class = "letter" > o< / li>
< li class = "letter" > p< / li>
< li class = "symbol" > < span class = "off" > [ < / span> < span class = "on" > { < / span> < / li>
< li class = "symbol" > < span class = "off" > ] < / span> < span class = "on" > } < / span> < / li>
< li class = "symbol lastitem" > < span class = "off" > \< / span> < span class = "on" > | < / span> < / li>
< li class = "capslock" > caps lock< / li>
< li class = "letter" > a< / li>
< li class = "letter" > s< / li>
< li class = "letter" > d< / li>
< li class = "letter" > f< / li>
< li class = "letter" > g< / li>
< li class = "letter" > h< / li>
< li class = "letter" > j< / li>
< li class = "letter" > k< / li>
< li class = "letter" > l< / li>
< li class = "symbol" > < span class = "off" > ; < / span> < span class = "on" > : < / span> < / li>
< li class = "symbol" > < span class = "off" > '< / span> < span class = "on" > & quot; < / span> < / li>
< li class = "return lastitem" > return < / li>
< li class = "left-shift" > shift< / li>
< li class = "letter" > z< / li>
< li class = "letter" > x< / li>
< li class = "letter" > c< / li>
< li class = "letter" > v< / li>
< li class = "letter" > b< / li>
< li class = "letter" > n< / li>
< li class = "letter" > m< / li>
< li class = "symbol" > < span class = "off" > , < / span> < span class = "on" > & lt; < / span> < / li>
< li class = "symbol" > < span class = "off" > . < / span> < span class = "on" > & gt; < / span> < / li>
< li class = "symbol" > < span class = "off" > / < / span> < span class = "on" > ? < / span> < / li>
< li class = "right-shift lastitem" > shift< / li>
< li class = "space lastitem" > & nbsp; < / li>
< / ul>
< / div>
< script type= "text/javascript" src= "jquery-3.3.1.js" > < / script>
< script type= "text/javascript" src= "keyboard.js" > < / script>
< / body>
jQuery代码
( function ( ) { var l= this , g, y= l. jQuery, p= l. $, o= l. jQuery= l. $ = function ( E , F ) { return new o. fn. init ( E , F ) } , D = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/ , f= /^.[^:#\[\.,]*$/ ; o. fn= o. prototype= { init: function ( E , H ) { E = E || document; if ( E . nodeType) { this [ 0 ] = E ; this . length= 1 ; this . context= E ; return this } if ( typeof E === "string" ) { var G = D . exec ( E ) ; if ( G && ( G [ 1 ] || ! H ) ) { if ( G [ 1 ] ) { E = o. clean ( [ G [ 1 ] ] , H ) } else { var I = document. getElementById ( G [ 3 ] ) ; if ( I && I . id!= G [ 3 ] ) { return o ( ) . find ( E ) } var F = o ( I || [ ] ) ; F . context= document; F . selector= E ; return F } } else { return o ( H ) . find ( E ) } } else { if ( o. isFunction ( E ) ) { return o ( document) . ready ( E ) } } if ( E . selector&& E . context) { this . selector= E . selector; this . context= E . context} return this . setArray ( o. isArray ( E ) ? E : o. makeArray ( E ) ) } , selector: "" , jquery: "1.3.2" , size: function ( ) { return this . length} , get : function ( E ) { return E === g? Array. prototype. slice. call ( this ) : this [ E ] } , pushStack: function ( F , H , E ) { var G = o ( F ) ; G . prevObject= this ; G . context= this . context; if ( H === "find" ) { G . selector= this . selector+ ( this . selector? " " : "" ) + E } else { if ( H ) { G . selector= this . selector+ "." + H + "(" + E + ")" } } return G } , setArray: function ( E ) { this . length= 0 ; Array. prototype. push. apply ( this , E ) ; return this } , each: function ( F , E ) { return o. each ( this , F , E ) } , index: function ( E ) { return o. inArray ( E && E . jquery? E [ 0 ] : E , this ) } , attr: function ( F , H , G ) { var E = F ; if ( typeof F === "string" ) { if ( H === g) { return this [ 0 ] && o[ G || "attr" ] ( this [ 0 ] , F ) } else { E = { } ; E [ F ] = H } } return this . each ( function ( I ) { for ( F in E ) { o. attr ( G ? this . style: this , F , o. prop ( this , E [ F ] , G , I , F ) ) } } ) } , css: function ( E , F ) { if ( ( E == "width" || E == "height" ) && parseFloat ( F ) < 0 ) { F = g} return this . attr ( E , F , "curCSS" ) } , text: function ( F ) { if ( typeof F !== "object" && F != null ) { return this . empty ( ) . append ( ( this [ 0 ] && this [ 0 ] . ownerDocument|| document) . createTextNode ( F ) ) } var E = "" ; o. each ( F || this , function ( ) { o. each ( this . childNodes, function ( ) { if ( this . nodeType!= 8 ) { E += this . nodeType!= 1 ? this . nodeValue: o. fn. text ( [ this ] ) } } ) } ) ; return E } , wrapAll: function ( E ) { if ( this [ 0 ] ) { var F = o ( E , this [ 0 ] . ownerDocument) . clone ( ) ; if ( this [ 0 ] . parentNode) { F . insertBefore ( this [ 0 ] ) } F . map ( function ( ) { var G = this ; while ( G . firstChild) { G = G . firstChild} return G } ) . append ( this ) } return this } , wrapInner: function ( E ) { return this . each ( function ( ) { o ( this ) . contents ( ) . wrapAll ( E ) } ) } , wrap: function ( E ) { return this . each ( function ( ) { o ( this ) . wrapAll ( E ) } ) } , append: function ( ) { return this . domManip ( arguments, true , function ( E ) { if ( this . nodeType== 1 ) { this . appendChild ( E ) } } ) } , prepend: function ( ) { return this . domManip ( arguments, true , function ( E ) { if ( this . nodeType== 1 ) { this . insertBefore ( E , this . firstChild) } } ) } , before: function ( ) { return this . domManip ( arguments, false , function ( E ) { this . parentNode. insertBefore ( E , this ) } ) } , after: function ( ) { return this . domManip ( arguments, false , function ( E ) { this . parentNode. insertBefore ( E , this . nextSibling) } ) } , end: function ( ) { return this . prevObject|| o ( [ ] ) } , push: [ ] . push, sort: [ ] . sort, splice: [ ] . splice, find: function ( E ) { if ( this . length=== 1 ) { var F = this . pushStack ( [ ] , "find" , E ) ; F . length= 0 ; o. find ( E , this [ 0 ] , F ) ; return F } else { return this . pushStack ( o. unique ( o. map ( this , function ( G ) { return o. find ( E , G ) } ) ) , "find" , E ) } } , clone: function ( G ) { var E = this . map ( function ( ) { if ( ! o. support. noCloneEvent&& ! o. isXMLDoc ( this ) ) { var I = this . outerHTML; if ( ! I ) { var J = this . ownerDocument. createElement ( "div" ) ; J . appendChild ( this . cloneNode ( true ) ) ; I = J . innerHTML} return o. clean ( [ I . replace ( / jQuery\d+="(?:\d+|null)"/g , "" ) . replace ( /^\s*/ , "" ) ] ) [ 0 ] } else { return this . cloneNode ( true ) } } ) ; if ( G === true ) { var H = this . find ( "*" ) . andSelf ( ) , F = 0 ; E . find ( "*" ) . andSelf ( ) . each ( function ( ) { if ( this . nodeName!== H [ F ] . nodeName) { return } var I = o. data ( H [ F ] , "events" ) ; for ( var K in I ) { for ( var J in I [ K ] ) { o. event. add ( this , K , I [ K ] [ J ] , I [ K ] [ J ] . data) } } F ++ } ) } return E } , filter: function ( E ) { return this . pushStack ( o. isFunction ( E ) && o. grep ( this , function ( G , F ) { return E . call ( G , F ) } ) || o. multiFilter ( E , o. grep ( this , function ( F ) { return F . nodeType=== 1 } ) ) , "filter" , E ) } , closest: function ( E ) { var G = o. expr. match. POS . test ( E ) ? o ( E ) : null , F = 0 ; return this . map ( function ( ) { var H = this ; while ( H && H . ownerDocument) { if ( G ? G . index ( H ) > - 1 : o ( H ) . is ( E ) ) { o. data ( H , "closest" , F ) ; return H } H = H . parentNode; F ++ } } ) } , not: function ( E ) { if ( typeof E === "string" ) { if ( f. test ( E ) ) { return this . pushStack ( o. multiFilter ( E , this , true ) , "not" , E ) } else { E = o. multiFilter ( E , this ) } } var F = E . length&& E [ E . length- 1 ] !== g&& ! E . nodeType; return this . filter ( function ( ) { return F ? o. inArray ( this , E ) < 0 : this != E } ) } , add: function ( E ) { return this . pushStack ( o. unique ( o. merge ( this . get ( ) , typeof E === "string" ? o ( E ) : o. makeArray ( E ) ) ) ) } , is: function ( E ) { return ! ! E && o. multiFilter ( E , this ) . length> 0 } , hasClass: function ( E ) { return ! ! E && this . is ( "." + E ) } , val: function ( K ) { if ( K === g) { var E = this [ 0 ] ; if ( E ) { if ( o. nodeName ( E , "option" ) ) { return ( E . attributes. value|| { } ) . specified? E . value: E . text} if ( o. nodeName ( E , "select" ) ) { var I = E . selectedIndex, L = [ ] , M = E . options, H = E . type== "select-one" ; if ( I < 0 ) { return null } for ( var F = H ? I : 0 , J = H ? I + 1 : M . length; F < J ; F ++ ) { var G = M [ F ] ; if ( G . selected) { K = o ( G ) . val ( ) ; if ( H ) { return K } L . push ( K ) } } return L } return ( E . value|| "" ) . replace ( /\r/g , "" ) } return g} if ( typeof K === "number" ) { K += "" } return this . each ( function ( ) { if ( this . nodeType!= 1 ) { return } if ( o. isArray ( K ) && /radio|checkbox/ . test ( this . type) ) { this . checked= ( o. inArray ( this . value, K ) >= 0 || o. inArray ( this . name, K ) >= 0 ) } else { if ( o. nodeName ( this , "select" ) ) { var N = o. makeArray ( K ) ; o ( "option" , this ) . each ( function ( ) { this . selected= ( o. inArray ( this . value, N ) >= 0 || o. inArray ( this . text, N ) >= 0 ) } ) ; if ( ! N . length) { this . selectedIndex= - 1 } } else { this . value= K } } } ) } , html: function ( E ) { return E === g? ( this [ 0 ] ? this [ 0 ] . innerHTML. replace ( / jQuery\d+="(?:\d+|null)"/g , "" ) : null ) : this . empty ( ) . append ( E ) } , replaceWith: function ( E ) { return this . after ( E ) . remove ( ) } , eq: function ( E ) { return this . slice ( E , + E + 1 ) } , slice: function ( ) { return this . pushStack ( Array. prototype. slice. apply ( this , arguments) , "slice" , Array. prototype. slice. call ( arguments) . join ( "," ) ) } , map: function ( E ) { return this . pushStack ( o. map ( this , function ( G , F ) { return E . call ( G , F , G ) } ) ) } , andSelf: function ( ) { return this . add ( this . prevObject) } , domManip: function ( J , M , L ) { if ( this [ 0 ] ) { var I = ( this [ 0 ] . ownerDocument|| this [ 0 ] ) . createDocumentFragment ( ) , F = o. clean ( J , ( this [ 0 ] . ownerDocument|| this [ 0 ] ) , I ) , H = I . firstChild; if ( H ) { for ( var G = 0 , E = this . length; G < E ; G ++ ) { L . call ( K ( this [ G ] , H ) , this . length> 1 || G > 0 ? I . cloneNode ( true ) : I ) } } if ( F ) { o. each ( F , z) } } return this ; function K ( N , O ) { return M && o. nodeName ( N , "table" ) && o. nodeName ( O , "tr" ) ? ( N . getElementsByTagName ( "tbody" ) [ 0 ] || N . appendChild ( N . ownerDocument. createElement ( "tbody" ) ) ) : N } } } ; o. fn. init. prototype= o. fn; function z ( E , F ) { if ( F . src) { o. ajax ( { url: F . src, async : false , dataType: "script" } ) } else { o. globalEval ( F . text|| F . textContent|| F . innerHTML|| "" ) } if ( F . parentNode) { F . parentNode. removeChild ( F ) } } function e ( ) { return + new Date } o. extend= o. fn. extend = function ( ) { var J = arguments[ 0 ] || { } , H = 1 , I = arguments. length, E = false , G ; if ( typeof J === "boolean" ) { E = J ; J = arguments[ 1 ] || { } ; H = 2 } if ( typeof J !== "object" && ! o. isFunction ( J ) ) { J = { } } if ( I == H ) { J = this ; -- H } for ( ; H < I ; H ++ ) { if ( ( G = arguments[ H ] ) != null ) { for ( var F in G ) { var K = J [ F ] , L = G [ F ] ; if ( J === L ) { continue } if ( E && L && typeof L === "object" && ! L . nodeType) { J [ F ] = o. extend ( E , K || ( L . length!= null ? [ ] : { } ) , L ) } else { if ( L !== g) { J [ F ] = L } } } } } return J } ; var b= /z-?index|font-?weight|opacity|zoom|line-?height/i , q= document. defaultView|| { } , s= Object. prototype. toString; o. extend ( { noConflict: function ( E ) { l. $= p; if ( E ) { l. jQuery= y} return o} , isFunction: function ( E ) { return s. call ( E ) === "[object Function]" } , isArray: function ( E ) { return s. call ( E ) === "[object Array]" } , isXMLDoc: function ( E ) { return E . nodeType=== 9 && E . documentElement. nodeName!== "HTML" || ! ! E . ownerDocument&& o. isXMLDoc ( E . ownerDocument) } , globalEval: function ( G ) { if ( G && /\S/ . test ( G ) ) { var F = document. getElementsByTagName ( "head" ) [ 0 ] || document. documentElement, E = document. createElement ( "script" ) ; E . type= "text/javascript" ; if ( o. support. scriptEval) { E . appendChild ( document. createTextNode ( G ) ) } else { E . text= G } F . insertBefore ( E , F . firstChild) ; F . removeChild ( E ) } } , nodeName: function ( F , E ) { return F . nodeName&& F . nodeName. toUpperCase ( ) == E . toUpperCase ( ) } , each: function ( G , K , F ) { var E , H = 0 , I = G . length; if ( F ) { if ( I === g) { for ( E in G ) { if ( K . apply ( G [ E ] , F ) === false ) { break } } } else { for ( ; H < I ; ) { if ( K . apply ( G [ H ++ ] , F ) === false ) { break } } } } else { if ( I === g) { for ( E in G ) { if ( K . call ( G [ E ] , E , G [ E ] ) === false ) { break } } } else { for ( var J = G [ 0 ] ; H < I && K . call ( J , H , J ) !== false ; J = G [ ++ H ] ) { } } } return G } , prop: function ( H , I , G , F , E ) { if ( o. isFunction ( I ) ) { I = I . call ( H , F ) } return typeof I === "number" && G == "curCSS" && ! b. test ( E ) ? I + "px" : I } , className: { add: function ( E , F ) { o. each ( ( F || "" ) . split ( /\s+/ ) , function ( G , H ) { if ( E . nodeType== 1 && ! o. className. has ( E . className, H ) ) { E . className+= ( E . className? " " : "" ) + H } } ) } , remove: function ( E , F ) { if ( E . nodeType== 1 ) { E . className= F !== g? o. grep ( E . className. split ( /\s+/ ) , function ( G ) { return ! o. className. has ( F , G ) } ) . join ( " " ) : "" } } , has: function ( F , E ) { return F && o. inArray ( E , ( F . className|| F ) . toString ( ) . split ( /\s+/ ) ) > - 1 } } , swap: function ( H , G , I ) { var E = { } ; for ( var F in G ) { E [ F ] = H . style[ F ] ; H . style[ F ] = G [ F ] } I . call ( H ) ; for ( var F in G ) { H . style[ F ] = E [ F ] } } , css: function ( H , F , J , E ) { if ( F == "width" || F == "height" ) { var L , G = { position: "absolute" , visibility: "hidden" , display: "block" } , K = F == "width" ? [ "Left" , "Right" ] : [ "Top" , "Bottom" ] ; function I ( ) { L = F == "width" ? H . offsetWidth: H . offsetHeight; if ( E === "border" ) { return } o. each ( K , function ( ) { if ( ! E ) { L -= parseFloat ( o. curCSS ( H , "padding" + this , true ) ) || 0 } if ( E === "margin" ) { L += parseFloat ( o. curCSS ( H , "margin" + this , true ) ) || 0 } else { L -= parseFloat ( o. curCSS ( H , "border" + this + "Width" , true ) ) || 0 } } ) } if ( H . offsetWidth!== 0 ) { I ( ) } else { o. swap ( H , G , I ) } return Math. max ( 0 , Math. round ( L ) ) } return o. curCSS ( H , F , J ) } , curCSS: function ( I , F , G ) { var L , E = I . style; if ( F == "opacity" && ! o. support. opacity) { L = o. attr ( E , "opacity" ) ; return L == "" ? "1" : L } if ( F . match ( /float/i ) ) { F = w} if ( ! G && E && E [ F ] ) { L = E [ F ] } else { if ( q. getComputedStyle) { if ( F . match ( /float/i ) ) { F = "float" } F = F . replace ( /([A-Z])/g , "-$1" ) . toLowerCase ( ) ; var M = q. getComputedStyle ( I , null ) ; if ( M ) { L = M . getPropertyValue ( F ) } if ( F == "opacity" && L == "" ) { L = "1" } } else { if ( I . currentStyle) { var J = F . replace ( /\-(\w)/g , function ( N , O ) { return O . toUpperCase ( ) } ) ; L = I . currentStyle[ F ] || I . currentStyle[ J ] ; if ( ! /^\d+(px)?$/i . test ( L ) && /^\d/ . test ( L ) ) { var H = E . left, K = I . runtimeStyle. left; I . runtimeStyle. left= I . currentStyle. left; E . left= L || 0 ; L = E . pixelLeft+ "px" ; E . left= H ; I . runtimeStyle. left= K } } } } return L } , clean: function ( F , K , I ) { K = K || document; if ( typeof K . createElement=== "undefined" ) { K = K . ownerDocument|| K [ 0 ] && K [ 0 ] . ownerDocument|| document} if ( ! I && F . length=== 1 && typeof F [ 0 ] === "string" ) { var H = /^<(\w+)\s*\/?>$/ . exec ( F [ 0 ] ) ; if ( H ) { return [ K . createElement ( H [ 1 ] ) ] } } var G = [ ] , E = [ ] , L = K . createElement ( "div" ) ; o. each ( F , function ( P , S ) { if ( typeof S === "number" ) { S += "" } if ( ! S ) { return } if ( typeof S === "string" ) { S = S . replace ( /(<(\w+)[^>]*?)\/>/g , function ( U , V , T ) { return T . match ( /^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i ) ? U : V + ">" + T + ">" } ) ; var O = S . replace ( /^\s+/ , "" ) . substring ( 0 , 10 ) . toLowerCase ( ) ; var Q = ! O . indexOf ( ") && [ 1 , "" , "" ] || ! O . indexOf ( ") && [ 1 , "" , "" ] || O . match ( /^<(thead|tbody|tfoot|colg|cap)/ ) && [ 1 , "" ] || ! O . indexOf ( ") && [ 2 , "" ] || ( ! O . indexOf ( " ) || ! O . indexOf ( " ) ) && [ 3 , "" ] || ! O . indexOf ( ") && [ 2 , "" ] || ! o. support. htmlSerialize&& [ 1 , "div", "
" ] || [ 0 , "" , "" ] ; L . innerHTML= Q [ 1 ] + S + Q [ 2 ] ; while ( Q [ 0 ] -- ) { L = L . lastChild} if ( ! o. support. tbody) { var R = /. test ( S ) , N = ! O . indexOf ( ") && ! R ? L . firstChild&& L . firstChild. childNodes: Q [ 1 ] == ""&& ! R ? L . childNodes: [ ] ; for ( var M = N . length- 1 ; M >= 0 ; -- M ) { if ( o. nodeName ( N [ M ] , "tbody" ) && ! N [ M ] . childNodes. length) { N [ M ] . parentNode. removeChild ( N [ M ] ) } } } if ( ! o. support. leadingWhitespace&& /^\s/ . test ( S ) ) { L . insertBefore ( K . createTextNode ( S . match ( /^\s*/ ) [ 0 ] ) , L . firstChild) } S = o. makeArray ( L . childNodes) } if ( S . nodeType) { G . push ( S ) } else { G = o. merge ( G , S ) } } ) ; if ( I ) { for ( var J = 0 ; G [ J ] ; J ++ ) { if ( o. nodeName ( G [ J ] , "script" ) && ( ! G [ J ] . type|| G [ J ] . type. toLowerCase ( ) === "text/javascript" ) ) { E . push ( G [ J ] . parentNode? G [ J ] . parentNode. removeChild ( G [ J ] ) : G [ J ] ) } else { if ( G [ J ] . nodeType=== 1 ) { G . splice. apply ( G , [ J + 1 , 0 ] . concat ( o. makeArray ( G [ J ] . getElementsByTagName ( "script" ) ) ) ) } I . appendChild ( G [ J ] ) } } return E } return G } , attr: function ( J , G , K ) { if ( ! J || J . nodeType== 3 || J . nodeType== 8 ) { return g} var H = ! o. isXMLDoc ( J ) , L = K !== g; G = H && o. props[ G ] || G ; if ( J . tagName) { var F = /href|src|style/ . test ( G ) ; if ( G == "selected" && J . parentNode) { J . parentNode. selectedIndex} if ( G in J && H && ! F ) { if ( L ) { if ( G == "type" && o. nodeName ( J , "input" ) && J . parentNode) { throw "type property can't be changed" } J [ G ] = K } if ( o. nodeName ( J , "form" ) && J . getAttributeNode ( G ) ) { return J . getAttributeNode ( G ) . nodeValue} if ( G == "tabIndex" ) { var I = J . getAttributeNode ( "tabIndex" ) ; return I && I . specified? I . value: J . nodeName. match ( /(button|input|object|select|textarea)/i ) ? 0 : J . nodeName. match ( /^(a|area)$/i ) && J . href? 0 : g} return J [ G ] } if ( ! o. support. style&& H && G == "style" ) { return o. attr ( J . style, "cssText" , K ) } if ( L ) { J . setAttribute ( G , "" + K ) } var E = ! o. support. hrefNormalized&& H && F ? J . getAttribute ( G , 2 ) : J . getAttribute ( G ) ; return E === null ? g: E } if ( ! o. support. opacity&& G == "opacity" ) { if ( L ) { J . zoom= 1 ; J . filter= ( J . filter|| "" ) . replace ( /alpha\([^)]*\)/ , "" ) + ( parseInt ( K ) + "" == "NaN" ? "" : "alpha(opacity=" + K * 100 + ")" ) } return J . filter&& J . filter. indexOf ( "opacity=" ) >= 0 ? ( parseFloat ( J . filter. match ( /opacity=([^)]*)/ ) [ 1 ] ) / 100 ) + "" : "" } G = G . replace ( /-([a-z])/ig , function ( M , N ) { return N . toUpperCase ( ) } ) ; if ( L ) { J [ G ] = K } return J [ G ] } , trim: function ( E ) { return ( E || "" ) . replace ( /^\s+|\s+$/g , "" ) } , makeArray: function ( G ) { var E = [ ] ; if ( G != null ) { var F = G . length; if ( F == null || typeof G === "string" || o. isFunction ( G ) || G . setInterval) { E [ 0 ] = G } else { while ( F ) { E [ -- F ] = G [ F ] } } } return E } , inArray: function ( G , H ) { for ( var E = 0 , F = H . length; E < F ; E ++ ) { if ( H [ E ] === G ) { return E } } return - 1 } , merge: function ( H , E ) { var F = 0 , G , I = H . length; if ( ! o. support. getAll) { while ( ( G = E [ F ++ ] ) != null ) { if ( G . nodeType!= 8 ) { H [ I ++ ] = G } } } else { while ( ( G = E [ F ++ ] ) != null ) { H [ I ++ ] = G } } return H } , unique: function ( K ) { var F = [ ] , E = { } ; try { for ( var G = 0 , H = K . length; G < H ; G ++ ) { var J = o. data ( K [ G ] ) ; if ( ! E [ J ] ) { E [ J ] = true ; F . push ( K [ G ] ) } } } catch ( I ) { F = K } return F } , grep: function ( F , J , E ) { var G = [ ] ; for ( var H = 0 , I = F . length; H < I ; H ++ ) { if ( ! E != ! J ( F [ H ] , H ) ) { G . push ( F [ H ] ) } } return G } , map: function ( E , J ) { var F = [ ] ; for ( var G = 0 , H = E . length; G < H ; G ++ ) { var I = J ( E [ G ] , G ) ; if ( I != null ) { F [ F . length] = I } } return F . concat. apply ( [ ] , F ) } } ) ; var C = navigator. userAgent. toLowerCase ( ) ; o. browser= { version: ( C . match ( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [ 0 , "0" ] ) [ 1 ] , safari: /webkit/ . test ( C ) , opera: /opera/ . test ( C ) , msie: /msie/ . test ( C ) && ! /opera/ . test ( C ) , mozilla: /mozilla/ . test ( C ) && ! /(compatible|webkit)/ . test ( C ) } ; o. each ( { parent: function ( E ) { return E . parentNode} , parents: function ( E ) { return o. dir ( E , "parentNode" ) } , next: function ( E ) { return o. nth ( E , 2 , "nextSibling" ) } , prev: function ( E ) { return o. nth ( E , 2 , "previousSibling" ) } , nextAll: function ( E ) { return o. dir ( E , "nextSibling" ) } , prevAll: function ( E ) { return o. dir ( E , "previousSibling" ) } , siblings: function ( E ) { return o. sibling ( E . parentNode. firstChild, E ) } , children: function ( E ) { return o. sibling ( E . firstChild) } , contents: function ( E ) { return o. nodeName ( E , "iframe" ) ? E . contentDocument|| E . contentWindow. document: o. makeArray ( E . childNodes) } } , function ( E , F ) { o. fn[ E ] = function ( G ) { var H = o. map ( this , F ) ; if ( G && typeof G == "string" ) { H = o. multiFilter ( G , H ) } return this . pushStack ( o. unique ( H ) , E , G ) } } ) ; o. each ( { appendTo: "append" , prependTo: "prepend" , insertBefore: "before" , insertAfter: "after" , replaceAll: "replaceWith" } , function ( E , F ) { o. fn[ E ] = function ( G ) { var J = [ ] , L = o ( G ) ; for ( var K = 0 , H = L . length; K < H ; K ++ ) { var I = ( K > 0 ? this . clone ( true ) : this ) . get ( ) ; o. fn[ F ] . apply ( o ( L [ K ] ) , I ) ; J = J . concat ( I ) } return this . pushStack ( J , E , G ) } } ) ; o. each ( { removeAttr: function ( E ) { o. attr ( this , E , "" ) ; if ( this . nodeType== 1 ) { this . removeAttribute ( E ) } } , addClass: function ( E ) { o. className. add ( this , E ) } , removeClass: function ( E ) { o. className. remove ( this , E ) } , toggleClass: function ( F , E ) { if ( typeof E !== "boolean" ) { E = ! o. className. has ( this , F ) } o. className[ E ? "add" : "remove" ] ( this , F ) } , remove: function ( E ) { if ( ! E || o. filter ( E , [ this ] ) . length) { o ( "*" , this ) . add ( [ this ] ) . each ( function ( ) { o. event. remove ( this ) ; o. removeData ( this ) } ) ; if ( this . parentNode) { this . parentNode. removeChild ( this ) } } } , empty: function ( ) { o ( this ) . children ( ) . remove ( ) ; while ( this . firstChild) { this . removeChild ( this . firstChild) } } } , function ( E , F ) { o. fn[ E ] = function ( ) { return this . each ( F , arguments) } } ) ; function j ( E , F ) { return E [ 0 ] && parseInt ( o. curCSS ( E [ 0 ] , F , true ) , 10 ) || 0 } var h= "jQuery" + e ( ) , v= 0 , A = { } ; o. extend ( { cache: { } , data: function ( F , E , G ) { F = F == l? A : F ; var H = F [ h] ; if ( ! H ) { H = F [ h] = ++ v} if ( E && ! o. cache[ H ] ) { o. cache[ H ] = { } } if ( G !== g) { o. cache[ H ] [ E ] = G } return E ? o. cache[ H ] [ E ] : H } , removeData: function ( F , E ) { F = F == l? A : F ; var H = F [ h] ; if ( E ) { if ( o. cache[ H ] ) { delete o. cache[ H ] [ E ] ; E = "" ; for ( E in o. cache[ H ] ) { break } if ( ! E ) { o. removeData ( F ) } } } else { try { delete F [ h] } catch ( G ) { if ( F . removeAttribute) { F . removeAttribute ( h) } } delete o. cache[ H ] } } , queue: function ( F , E , H ) { if ( F ) { E = ( E || "fx" ) + "queue" ; var G = o. data ( F , E ) ; if ( ! G || o. isArray ( H ) ) { G = o. data ( F , E , o. makeArray ( H ) ) } else { if ( H ) { G . push ( H ) } } } return G } , dequeue: function ( H , G ) { var E = o. queue ( H , G ) , F = E . shift ( ) ; if ( ! G || G === "fx" ) { F = E [ 0 ] } if ( F !== g) { F . call ( H ) } } } ) ; o. fn. extend ( { data: function ( E , G ) { var H = E . split ( "." ) ; H [ 1 ] = H [ 1 ] ? "." + H [ 1 ] : "" ; if ( G === g) { var F = this . triggerHandler ( "getData" + H [ 1 ] + "!" , [ H [ 0 ] ] ) ; if ( F === g&& this . length) { F = o. data ( this [ 0 ] , E ) } return F === g&& H [ 1 ] ? this . data ( H [ 0 ] ) : F } else { return this . trigger ( "setData" + H [ 1 ] + "!" , [ H [ 0 ] , G ] ) . each ( function ( ) { o. data ( this , E , G ) } ) } } , removeData: function ( E ) { return this . each ( function ( ) { o. removeData ( this , E ) } ) } , queue: function ( E , F ) { if ( typeof E !== "string" ) { F = E ; E = "fx" } if ( F === g) { return o. queue ( this [ 0 ] , E ) } return this . each ( function ( ) { var G = o. queue ( this , E , F ) ; if ( E == "fx" && G . length== 1 ) { G [ 0 ] . call ( this ) } } ) } , dequeue: function ( E ) { return this . each ( function ( ) { o. dequeue ( this , E ) } ) } } ) ;
( function ( ) { var R = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g , L = 0 , H = Object. prototype. toString; var F = function ( Y , U , ab, ac) { ab= ab|| [ ] ; U = U || document; if ( U . nodeType!== 1 && U . nodeType!== 9 ) { return [ ] } if ( ! Y || typeof Y !== "string" ) { return ab} var Z = [ ] , W , af, ai, T , ad, V , X = true ; R . lastIndex= 0 ; while ( ( W = R . exec ( Y ) ) !== null ) { Z . push ( W [ 1 ] ) ; if ( W [ 2 ] ) { V = RegExp. rightContext; break } } if ( Z . length> 1 && M . exec ( Y ) ) { if ( Z . length=== 2 && I . relative[ Z [ 0 ] ] ) { af= J ( Z [ 0 ] + Z [ 1 ] , U ) } else { af= I . relative[ Z [ 0 ] ] ? [ U ] : F ( Z . shift ( ) , U ) ; while ( Z . length) { Y = Z . shift ( ) ; if ( I . relative[ Y ] ) { Y += Z . shift ( ) } af= J ( Y , af) } } } else { var ae= ac? { expr: Z . pop ( ) , set : E ( ac) } : F . find ( Z . pop ( ) , Z . length=== 1 && U . parentNode? U . parentNode: U , Q ( U ) ) ; af= F . filter ( ae. expr, ae. set ) ; if ( Z . length> 0 ) { ai= E ( af) } else { X = false } while ( Z . length) { var ah= Z . pop ( ) , ag= ah; if ( ! I . relative[ ah] ) { ah= ""} else { ag= Z . pop ( ) } if ( ag== null ) { ag= U } I . relative[ ah] ( ai, ag, Q ( U ) ) } } if ( ! ai) { ai= af} if ( ! ai) { throw "Syntax error, unrecognized expression: "+ ( ah|| Y ) } if ( H . call ( ai) === "[ object Array] ") { if ( ! X ) { ab. push. apply ( ab, ai) } else { if ( U . nodeType=== 1 ) { for ( var aa= 0 ; ai[ aa] != null ; aa++ ) { if ( ai[ aa] && ( ai[ aa] === true || ai[ aa] . nodeType=== 1 && K ( U , ai[ aa] ) ) ) { ab. push ( af[ aa] ) } } } else { for ( var aa= 0 ; ai[ aa] != null ; aa++ ) { if ( ai[ aa] && ai[ aa] . nodeType=== 1 ) { ab. push ( af[ aa] ) } } } } } else { E ( ai, ab) } if ( V ) { F ( V , U , ab, ac) ; if ( G ) { hasDuplicate= false ; ab. sort ( G ) ; if ( hasDuplicate) { for ( var aa= 1 ; aa< ab. length; aa++ ) { if ( ab[ aa] === ab[ aa- 1 ] ) { ab. splice ( aa-- , 1 ) } } } } } return ab} ; F . matches = function ( T , U ) { return F ( T , null , null , U ) } ; F . find = function ( aa, T , ab) { var Z , X ; if ( ! aa) { return [ ] } for ( var W = 0 , V = I . order. length; W < V ; W ++ ) { var Y = I . order[ W ] , X ; if ( ( X = I . match[ Y ] . exec ( aa) ) ) { var U = RegExp. leftContext; if ( U . substr ( U . length- 1 ) !== "\\") { X [ 1 ] = ( X [ 1 ] || "") . replace ( /\\/g , "") ; Z = I . find[ Y ] ( X , T , ab) ; if ( Z != null ) { aa= aa. replace ( I . match[ Y ] , "") ; break } } } } if ( ! Z ) { Z = T . getElementsByTagName ( "* ") } return { set : Z , expr: aa} } ; F . filter = function ( ad, ac, ag, W ) { var V = ad, ai= [ ] , aa= ac, Y , T , Z = ac&& ac[ 0 ] && Q ( ac[ 0 ] ) ; while ( ad&& ac. length) { for ( var ab in I . filter) { if ( ( Y = I . match[ ab] . exec ( ad) ) != null ) { var U = I . filter[ ab] , ah, af; T = false ; if ( aa== ai) { ai= [ ] } if ( I . preFilter[ ab] ) { Y = I . preFilter[ ab] ( Y , aa, ag, ai, W , Z ) ; if ( ! Y ) { T = ah= true } else { if ( Y === true ) { continue } } } if ( Y ) { for ( var X = 0 ; ( af= aa[ X ] ) != null ; X ++ ) { if ( af) { ah= U ( af, Y , X , aa) ; var ae= W ^ ! ! ah; if ( ag&& ah!= null ) { if ( ae) { T = true } else { aa[ X ] = false } } else { if ( ae) { ai. push ( af) ; T = true } } } } } if ( ah!== g) { if ( ! ag) { aa= ai} ad= ad. replace ( I . match[ ab] , "") ; if ( ! T ) { return [ ] } break } } } if ( ad== V ) { if ( T == null ) { throw "Syntax error, unrecognized expression: "+ ad} else { break } } V = ad} return aa} ; var I = F . selectors= { order: [ "ID ", "NAME ", "TAG "] , match: { ID : /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/ , CLASS : /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/ , NAME : /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/ , ATTR : /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/ , TAG : /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/ , CHILD : /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/ , POS : /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/ , PSEUDO : /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ } , attrMap: { "class" : "className", "for ": "htmlFor"} , attrHandle: { href: function ( T ) { return T . getAttribute ( "href") } } , relative: { "+ ": function ( aa, T , Z ) { var X = typeof T === "string", ab= X && ! /\W/ . test ( T ) , Y = X && ! ab; if ( ab&& ! Z ) { T = T . toUpperCase ( ) } for ( var W = 0 , V = aa. length, U ; W < V ; W ++ ) { if ( ( U = aa[ W ] ) ) { while ( ( U = U . previousSibling) && U . nodeType!== 1 ) { } aa[ W ] = Y || U && U . nodeName=== T ? U || false : U === T } } if ( Y ) { F . filter ( T , aa, true ) } } , "> ": function ( Z , U , aa) { var X = typeof U === "string"; if ( X && ! /\W/ . test ( U ) ) { U = aa? U : U . toUpperCase ( ) ; for ( var V = 0 , T = Z . length; V < T ; V ++ ) { var Y = Z [ V ] ; if ( Y ) { var W = Y . parentNode; Z [ V ] = W . nodeName=== U ? W : false } } } else { for ( var V = 0 , T = Z . length; V < T ; V ++ ) { var Y = Z [ V ] ; if ( Y ) { Z [ V ] = X ? Y . parentNode: Y . parentNode=== U } } if ( X ) { F . filter ( U , Z , true ) } } } , "": function ( W , U , Y ) { var V = L ++ , T = S ; if ( ! U . match ( /\W/ ) ) { var X = U = Y ? U : U . toUpperCase ( ) ; T = P } T ( "parentNode", U , V , W , X , Y ) } , "~ ": function ( W , U , Y ) { var V = L ++ , T = S ; if ( typeof U === "string"&& ! U . match ( /\W/ ) ) { var X = U = Y ? U : U . toUpperCase ( ) ; T = P } T ( "previousSibling", U , V , W , X , Y ) } } , find: { ID : function ( U , V , W ) { if ( typeof V . getElementById!== "undefined"&& ! W ) { var T = V . getElementById ( U [ 1 ] ) ; return T ? [ T ] : [ ] } } , NAME : function ( V , Y , Z ) { if ( typeof Y . getElementsByName!== "undefined") { var U = [ ] , X = Y . getElementsByName ( V [ 1 ] ) ; for ( var W = 0 , T = X . length; W < T ; W ++ ) { if ( X [ W ] . getAttribute ( "name") === V [ 1 ] ) { U . push ( X [ W ] ) } } return U . length=== 0 ? null : U } } , TAG : function ( T , U ) { return U . getElementsByTagName ( T [ 1 ] ) } } , preFilter: { CLASS : function ( W , U , V , T , Z , aa) { W = " "+ W [ 1 ] . replace ( /\\/g , "") + " "; if ( aa) { return W } for ( var X = 0 , Y ; ( Y = U [ X ] ) != null ; X ++ ) { if ( Y ) { if ( Z ^ ( Y . className&& ( " "+ Y . className+ " ") . indexOf ( W ) >= 0 ) ) { if ( ! V ) { T . push ( Y ) } } else { if ( V ) { U [ X ] = false } } } } return false } , ID : function ( T ) { return T [ 1 ] . replace ( /\\/g , "") } , TAG : function ( U , T ) { for ( var V = 0 ; T [ V ] === false ; V ++ ) { } return T [ V ] && Q ( T [ V ] ) ? U [ 1 ] : U [ 1 ] . toUpperCase ( ) } , CHILD : function ( T ) { if ( T [ 1 ] == "nth") { var U = /(-?)(\d*)n((?:\+|-)?\d*)/ . exec ( T [ 2 ] == "even"&& "2 n"|| T [ 2 ] == "odd"&& "2 n+ 1 "|| ! /\D/ . test ( T [ 2 ] ) && "0 n+ "+ T [ 2 ] || T [ 2 ] ) ; T [ 2 ] = ( U [ 1 ] + ( U [ 2 ] || 1 ) ) - 0 ; T [ 3 ] = U [ 3 ] - 0 } T [ 0 ] = L ++ ; return T } , ATTR : function ( X , U , V , T , Y , Z ) { var W = X [ 1 ] . replace ( /\\/g , "") ; if ( ! Z && I . attrMap[ W ] ) { X [ 1 ] = I . attrMap[ W ] } if ( X [ 2 ] === "~ = ") { X [ 4 ] = " "+ X [ 4 ] + " "} return X } , PSEUDO : function ( X , U , V , T , Y ) { if ( X [ 1 ] === "not") { if ( X [ 3 ] . match ( R ) . length> 1 || /^\w/ . test ( X [ 3 ] ) ) { X [ 3 ] = F ( X [ 3 ] , null , null , U ) } else { var W = F . filter ( X [ 3 ] , U , V , true ^ Y ) ; if ( ! V ) { T . push. apply ( T , W ) } return false } } else { if ( I . match. POS . test ( X [ 0 ] ) || I . match. CHILD . test ( X [ 0 ] ) ) { return true } } return X } , POS : function ( T ) { T . unshift ( true ) ; return T } } , filters: { enabled: function ( T ) { return T . disabled=== false && T . type!== "hidden"} , disabled: function ( T ) { return T . disabled=== true } , checked: function ( T ) { return T . checked=== true } , selected: function ( T ) { T . parentNode. selectedIndex; return T . selected=== true } , parent: function ( T ) { return ! ! T . firstChild} , empty: function ( T ) { return ! T . firstChild} , has: function ( V , U , T ) { return ! ! F ( T [ 3 ] , V ) . length} , header: function ( T ) { return / h\d/ i. test ( T . nodeName) } , text: function ( T ) { return "text"=== T . type} , radio: function ( T ) { return "radio"=== T . type} , checkbox: function ( T ) { return "checkbox"=== T . type} , file: function ( T ) { return "file"=== T . type} , password: function ( T ) { return "password"=== T . type} , submit: function ( T ) { return "submit"=== T . type} , image: function ( T ) { return "image"=== T . type} , reset: function ( T ) { return "reset"=== T . type} , button: function ( T ) { return "button"=== T . type|| T . nodeName. toUpperCase ( ) === "BUTTON "} , input: function ( T ) { return / input| select| textarea| button/ i. test ( T . nodeName) } } , setFilters: { first: function ( U , T ) { return T === 0 } , last: function ( V , U , T , W ) { return U === W . length- 1 } , even: function ( U , T ) { return T % 2 === 0 } , odd: function ( U , T ) { return T % 2 === 1 } , lt: function ( V , U , T ) { return U < T [ 3 ] - 0 } , gt: function ( V , U , T ) { return U > T [ 3 ] - 0 } , nth: function ( V , U , T ) { return T [ 3 ] - 0 == U } , eq: function ( V , U , T ) { return T [ 3 ] - 0 == U } } , filter: { PSEUDO : function ( Z , V , W , aa) { var U = V [ 1 ] , X = I . filters[ U ] ; if ( X ) { return X ( Z , W , V , aa) } else { if ( U === "contains") { return ( Z . textContent|| Z . innerText|| "") . indexOf ( V [ 3 ] ) >= 0 } else { if ( U === "not") { var Y = V [ 3 ] ; for ( var W = 0 , T = Y . length; W < T ; W ++ ) { if ( Y [ W ] === Z ) { return false } } return true } } } } , CHILD : function ( T , W ) { var Z = W [ 1 ] , U = T ; switch ( Z ) { case "only": case "first": while ( U = U . previousSibling) { if ( U . nodeType=== 1 ) { return false } } if ( Z == "first") { return true } U = T ; case "last": while ( U = U . nextSibling) { if ( U . nodeType=== 1 ) { return false } } return true ; case "nth": var V = W [ 2 ] , ac= W [ 3 ] ; if ( V == 1 && ac== 0 ) { return true } var Y = W [ 0 ] , ab= T . parentNode; if ( ab&& ( ab. sizcache!== Y || ! T . nodeIndex) ) { var X = 0 ; for ( U = ab. firstChild; U ; U = U . nextSibling) { if ( U . nodeType=== 1 ) { U . nodeIndex= ++ X } } ab. sizcache= Y } var aa= T . nodeIndex- ac; if ( V == 0 ) { return aa== 0 } else { return ( aa% V == 0 && aa/ V >= 0 ) } } } , ID : function ( U , T ) { return U . nodeType=== 1 && U . getAttribute ( "id") === T } , TAG : function ( U , T ) { return ( T === "* "&& U . nodeType=== 1 ) || U . nodeName=== T } , CLASS : function ( U , T ) { return ( " "+ ( U . className|| U . getAttribute ( "class ") ) + " ") . indexOf ( T ) > - 1 } , ATTR : function ( Y , W ) { var V = W [ 1 ] , T = I . attrHandle[ V ] ? I . attrHandle[ V ] ( Y ) : Y [ V ] != null ? Y [ V ] : Y . getAttribute ( V ) , Z = T + "", X = W [ 2 ] , U = W [ 4 ] ; return T == null ? X === "!= ": X === "= "? Z === U : X === "*= "? Z . indexOf ( U ) >= 0 : X === "~ = "? ( " "+ Z + " ") . indexOf ( U ) >= 0 : ! U ? Z && T !== false : X === "!= "? Z != U : X === "^= "? Z . indexOf ( U ) === 0 : X === "$= "? Z . substr ( Z . length- U . length) === U : X === "|= "? Z === U || Z . substr ( 0 , U . length+ 1 ) === U + "- ": false } , POS : function ( X , U , V , Y ) { var T = U [ 2 ] , W = I . setFilters[ T ] ; if ( W ) { return W ( X , V , U , Y ) } } } } ; var M = I . match. POS ; for ( var O in I . match) { I . match[ O ] = RegExp ( I . match[ O ] . source+ /(?![^\[]*\])(?![^\(]*\))/ . source) } var E = function ( U , T ) { U = Array. prototype. slice. call ( U ) ; if ( T ) { T . push. apply ( T , U ) ; return T } return U } ; try { Array. prototype. slice. call ( document. documentElement. childNodes) } catch ( N ) { E = function ( X , W ) { var U = W || [ ] ; if ( H . call ( X ) === "[ object Array] ") { Array. prototype. push. apply ( U , X ) } else { if ( typeof X . length=== "number") { for ( var V = 0 , T = X . length; V < T ; V ++ ) { U . push ( X [ V ] ) } } else { for ( var V = 0 ; X [ V ] ; V ++ ) { U . push ( X [ V ] ) } } } return U } } var G ; if ( document. documentElement. compareDocumentPosition) { G = function ( U , T ) { var V = U . compareDocumentPosition ( T ) & 4 ? - 1 : U === T ? 0 : 1 ; if ( V === 0 ) { hasDuplicate= true } return V } } else { if ( "sourceIndex" in document. documentElement) { G = function ( U , T ) { var V = U . sourceIndex- T . sourceIndex; if ( V === 0 ) { hasDuplicate= true } return V } } else { if ( document. createRange) { G = function ( W , U ) { var V = W . ownerDocument. createRange ( ) , T = U . ownerDocument. createRange ( ) ; V . selectNode ( W ) ; V . collapse ( true ) ; T . selectNode ( U ) ; T . collapse ( true ) ; var X = V . compareBoundaryPoints ( Range. START_TO_END , T ) ; if ( X === 0 ) { hasDuplicate= true } return X } } } } ( function ( ) { var U = document. createElement ( "form") , V = "script"+ ( new Date) . getTime ( ) ; U . innerHTML= "< input name= '"+ V + "'/ > ";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!==" undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!==" undefined"&&W.getAttributeNode(" id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!==" undefined"&&Y.getAttributeNode(" id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement(" div");T.appendChild(document.createComment(" "));if(T.getElementsByTagName(" * ").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]===" * "){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML=" < a href= '#' > < / a> ";if(T.firstChild&&typeof T.firstChild.getAttribute!==" undefined"&&T.firstChild.getAttribute(" href")!==" #"){I.attrHandle.href=function(U){return U.getAttribute(" href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement(" div");U.innerHTML=" < p class = 'TEST' > < / p> ";if(U.querySelectorAll&&U.querySelectorAll(" . TEST ").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement(" div");T.innerHTML=" < div class = 'test e' > < / div> < div class = 'test' > < / div> ";if(T.getElementsByClassName(" e").length===0){return}T.lastChild.className=" e";if(T.getElementsByClassName(" e").length===1){return}I.order.splice(1,0," CLASS ");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!==" undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U==" previousSibling"&&!ac;for(var W=0,V=ad.length;WpreviousSibling"&&!ac;for(var W=0,V=ad.length;Wstring"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!==" HTML "||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X=" ",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO," ")}T=I.relative[T]?T+" * ":T;for(var Z=0,U=V.length;Z: "]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=" : not ( "+V+" ) "}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I," events")||o.data(I," events",{}),J=o.data(I," handle")||o.data(I," handle",function(){return typeof o!==" undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(" . ");N=O.shift();H.type=O.slice().sort().join(" . ");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent(" on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K," events"),F,E;if(G){if(H===g||(typeof H===" string"&&H.charAt(0)==" . ")){for(var I in G){this.remove(K,I+(H||" "))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(" . ");O=Q.shift();var N=RegExp(" ( ^ | \\. ) "+Q.slice().sort().join(" . * \\. ")+" ( \\. | $) ");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K," handle"),false)}else{if(K.detachEvent){K.detachEvent(" on"+O,o.data(K," handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K," handle");if(L){L.elem=null}o.removeData(K," events");o.removeData(K," handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I===" object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf(" ! ")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H," handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H," a")&&G==" click"))&&H[" on"+G]&&H[" on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H," a")&&G==" click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(" . ");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp(" ( ^ | \\. ) "+L.slice().sort().join(" . * \\. ")+" ( \\. | $) ");E=(o.data(this," events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:" altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp(" ( ^ | \\. ) "+G[0]+" ( \\. | $) ");o.each((o.data(this," events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:" mouseenter",mouseout:" mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F==" unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F( ^ | \\. ) "+H.type+" ( \\. | $) "),G=true,F=[];o.each(o.data(this," events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem," closest")-o.data(I.elem," closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return[" live",F,E.replace(/\./g," `").replace(/ /g," | ")].join(" . ")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler(" ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener(" DOMContentLoaded",function(){document.removeEventListener(" DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent(" onreadystatechange",function(){if(document.readyState===" complete"){document.detachEvent(" onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll(" left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l," load",o.ready)}o.each((" blur, focus, load, resize, scroll, unload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select, submit, keydown, keypress, keyup, error").split(" , "),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind(" unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement(" script"),K=document.createElement(" div"),J=" script"+(new Date).getTime();K.style.display=" none";K.innerHTML=' / a" style=" color: red; float: left; opacity: .5 ; ">atext ';var H=K.getElementsByTagName(" * "),E=K.getElementsByTagName(" a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName(" tbody").length,objectAll:!!K.getElementsByTagName(" object")[0].getElementsByTagName(" * ").length,htmlSerialize:!!K.getElementsByTagName(" link").length,style:/red/.test(E.getAttribute(" style")),hrefNormalized:E.getAttribute(" href")===" / a",opacity:E.style.opacity===" 0.5 ",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type=" text/ javascript";try{G.appendChild(document.createTextNode(" window. "+J+" = 1 ; "))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent(" onclick",function(){o.support.noCloneEvent=false;K.detachEvent(" onclick",arguments.callee)});K.cloneNode(true).fireEvent(" onclick")}o(function(){var L=document.createElement(" div");L.style.width=L.style.paddingLeft=" 1 px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display=" none"})})();var w=o.support.cssFloat?" cssFloat":" styleFloat";o.props={" for ":" htmlFor"," class ":" className"," float":w,cssFloat:w,styleFloat:w,readonly:" readOnly",maxlength:" maxLength",cellspacing:" cellSpacing",rowspan:" rowSpan",tabindex:" tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!==" string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H=" GET ";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J===" object"){J=o.param(J);H=" POST "}}}var F=this;o.ajax({url:G,type:H,dataType:" html",data:J,complete:function(M,L){if(L==" success"||L==" notmodified"){F.html(E?o(" < div/ > ").append(M.responseText.replace(/
你可能感兴趣的:(js)
element实现动态路由+面包屑
软件技术NINI
vue案例 vue.js 前端
el-breadcrumb是ElementUI组件库中的一个面包屑导航组件,它用于显示当前页面的路径,帮助用户快速理解和导航到应用的各个部分。在Vue.js项目中,如果你已经安装了ElementUI,就可以很方便地使用el-breadcrumb组件。以下是一个基本的使用示例:安装ElementUI(如果你还没有安装的话):你可以通过npm或yarn来安装ElementUI。bash复制代码npmi
C#中使用split分割字符串
互联网打工人no1
c#
1、用字符串分隔:usingSystem.Text.RegularExpressions;stringstr="aaajsbbbjsccc";string[]sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);foreach(stringiinsArray)Response.Write(i.ToString()+"");输出结果:aaabbbc
【华为OD机试真题2023B卷 JAVA&JS】We Are A Team
若博豆
java 算法 华为 javascript
华为OD2023(B卷)机试题库全覆盖,刷题指南点这里WeAreATeam时间限制:1秒|内存限制:32768K|语言限制:不限题目描述:总共有n个人在机房,每个人有一个标号(1<=标号<=n),他们分成了多个团队,需要你根据收到的m条消息判定指定的两个人是否在一个团队中,具体的:1、消息构成为:abc,整数a、b分别代
数组去重
好奇的猫猫猫
整理自js中基础数据结构数组去重问题思考?如何去除数组中重复的项例如数组:[1,3,4,3,5]我们在做去重的时候,一开始想到的肯定是,逐个比较,外面一层循环,内层后一个与前一个一比较,如果是久不将当前这一项放进新的数组,挨个比较完之后返回一个新的去过重复的数组不好的实践方式上述方法效率极低,代码量还多,思考?有没有更好的方法这时候不禁一想当然有了!!!hashtable啊,通过对象的hash办法
【JS】执行时长(100分) |思路参考+代码解析(C++)
l939035548
JS 算法 数据结构 c++
题目为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下,最少需要多长时间执行完成。题目输入第一个参数为GPU一次最多执行的任务个数,取值范围[1,10000]第二个参数为任务数组长度,取值范围[1,10000]第三个参数为任务数组,数字范围
node.js学习
小猿L
node.js node.js 学习 vim
node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行
docker
igotyback
eureka 云原生
Docker容器的文件系统是隔离的,但是可以通过挂载卷(Volumes)或绑定挂载(BindMounts)将宿主机的文件系统目录映射到容器内部。要查看Docker容器的映射路径,可以使用以下方法:查看容器配置:使用dockerinspect命令可以查看容器的详细配置信息,包括挂载的卷。例如:bashdockerinspect在输出的JSON格式中,查找"Mounts"部分,这里会列出所有的挂载信息
在Ubuntu中编译含有JSON的文件出现报错
芝麻糊76
Linux kill_bug linux ubuntu json
在ubuntu中进行JSON相关学习的时候,我发现了一些小问题,决定与大家进行分享,减少踩坑时候出现不必要的时间耗费截取部分含有JSON部分的代码进行展示char*str="{\"title\":\"JSONExample\",\"author\":{\"name\":\"JohnDoe\",\"age\":35,\"isVerified\":true},\"tags\":[\"json\",\"
Xinference如何注册自定义模型
玩人工智能的辣条哥
人工智能 AI 大模型 Xinference
环境:Xinference问题描述:Xinference如何注册自定义模型解决方案:1.写个model_config.json,内容如下{"version":1,"context_length":2048,"model_name":"custom-llama-3","model_lang":["en","ch"],"model_ability":["generate","chat"],"model
Python神器!WEB自动化测试集成工具 DrissionPage
亚丁号
python 开发语言
一、前言用requests做数据采集面对要登录的网站时,要分析数据包、JS源码,构造复杂的请求,往往还要应付验证码、JS混淆、签名参数等反爬手段,门槛较高。若数据是由JS计算生成的,还须重现计算过程,体验不好,开发效率不高。使用浏览器,可以很大程度上绕过这些坑,但浏览器运行效率不高。因此,这个库设计初衷,是将它们合而为一,能够在不同须要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率
Mongodb Error: queryTxt ETIMEOUT xxxx.wwwdz.mongodb.net
佛一脚
error react mongodb 数据库
背景每天都能遇到奇怪的问题,做个记录,以便有缘人能得到帮助!换了一台电脑开发nextjs程序。需要连接mongodb数据,对数据进行增删改查。上一台电脑好好的程序,新电脑死活连不上mongodb数据库。同一套代码,没任何修改,搞得我怀疑人生了,打开浏览器进入mongodb官网毫无问题,也能进入线上系统查看数据,网络应该是没问题。于是我尝试了一下手机热点,这次代码能正常跑起来,连接数据库了!!!是不
Vue( ElementUI入门、vue-cli安装)
m0_l5z
elementui vue.js
一.ElementUI入门目录:1.ElementUI入门1.1ElementUI简介1.2Vue+ElementUI安装1.3开发示例2.搭建nodejs环境2.1nodejs介绍2.2npm是什么2.3nodejs环境搭建2.3.1下载2.3.2解压2.3.3配置环境变量2.3.4配置npm全局模块路径和cache默认安装位置2.3.5修改npm镜像提高下载速度2.3.6验证安装结果3.运行n
博客网站制作教程
2401_85194651
java maven
首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java
00. 这里整理了最全的爬虫框架(Java + Python)
有一只柴犬
爬虫系列 爬虫 java python
目录1、前言2、什么是网络爬虫3、常见的爬虫框架3.1、java框架3.1.1、WebMagic3.1.2、Jsoup3.1.3、HttpClient3.1.4、Crawler4j3.1.5、HtmlUnit3.1.6、Selenium3.2、Python框架3.2.1、Scrapy3.2.2、BeautifulSoup+Requests3.2.3、Selenium3.2.4、PyQuery3.2
vue 创建项目报错:command failed: npm install --loglevel error
那鱼、会飞
vue.js vue-cli3
这个问题其实很好解决,只是很多种情况,逐一排除即可。稳下心来~vuecli3创建项目我的node版本是node14.15.0,(永远不要尝试最新版本)node各种版本下载地址:以往的版本|Node.js(nodejs.org)vue/
[email protected] @vue/
[email protected] (注意vue/cli2和vue/cli3的下载命名有所改变,2是-形式,3是/形式)其实报错
更改npm镜像源为淘宝镜像
骆小骆
基于node.js
npm常用指令后缀*最近复习了一下node.js整理了一下跟node.js相关的指令后缀*--save、-S参数意思是把模块的版本信息保存到dependencies(生产环境依赖)中,即你的package.json文件的dependencies字段中;–--save-dev、-D参数意思是把模块版本信息保存到devDependencies(开发环境依赖)中,即你的package.json文件的de
COCO 格式的数据集转化为 YOLO 格式的数据集
QYQY77
YOLO python
"""--json_path输入的json文件路径--save_path保存的文件夹名字,默认为当前目录下的labels。"""importosimportjsonfromtqdmimporttqdmimportargparseparser=argparse.ArgumentParser()parser.add_argument('--json_path',default='./instances
NPM私库搭建-verdaccio(Linux)
Beam007
npm linux 前端
1、安装nodelinux服务器安装nodea)、官网下载所需的node版本https://nodejs.org/dist/v14.21.0/b)、解压安装包若下载的是xxx.tar.xz文件,解压命令为tar-xvfxxx.tar.xzc)、修改环境变量修改:/etc/profile文件#SETPATHFORNODEJSexportNODE_HOME=NODEJS解压安装的路径exportPAT
前端代码上传文件
余生逆风飞翔
前端 javascript 开发语言
点击上传文件import{ElNotification}from'element-plus'import{API_CONFIG}from'../config/index.js'import{UploadFilled}from'@element-plus/icons-vue'import{reactive}from'vue'import{BASE_URL}from'../config/index'i
golang获取用户输入的几种方式
余生逆风飞翔
golang 开发语言 后端
一、定义结构体typeUserInfostruct{Namestring`json:"name"`Ageint`json:"age"`Addstring`json:"add"`}typeReturnDatastruct{Messagestring`json:"message"`Statusstring`json:"status"`DataUserInfo`json:"data"`}二、get请求的
VUE3 + xterm + nestjs实现web远程终端 或 连接开启SSH登录的路由器和交换机。
焚木灵
node.js vue
可远程连接系统终端或开启SSH登录的路由器和交换机。相关资料:xtermjs/xterm.js:Aterminalfortheweb(github.com)后端实现(NestJS):1、安装依赖:npminstallnode-ssh@nestjs/websockets@nestjs/platform-socket.io2、我们将创建一个名为RemoteControlModule的NestJS模块,
spring mvc @RequestBody String类型参数
zoyation
spring-mvc spring mvc
通过如下配置:text/html;charset=UTF-8application/json;charset=UTF-8在springmvc的Controller层使用@RequestBody接收Content-Type为application/json的数据时,默认支持Map方式和对象方式参数@RequestMapping(value="/{code}/saveUser",method=Requ
Vue 项目运行时,报错 Error: Cannot find module ‘node:path‘
周bro
vue.js 前端 javascript node.js npm
node-v是否显示nodenpm-v报错Error:Cannotfindmodule‘node:path'是因为node版本和npm版本不匹配安装相对应的版本node版本10.16.0对应npm版本
[email protected] 执行该命令即可匹配版本官网https://nodejs.org/en/about/previous-releases
360前端星计划-动画可以这么玩
马小蜗
动画的基本原理定时器改变对象的属性根据新的属性重新渲染动画functionupdate(context){//更新属性}constticker=newTicker();ticker.tick(update,context);动画的种类1、JavaScript动画操作DOMCanvas2、CSS动画transitionanimation3、SVG动画SMILJS动画的优缺点优点:灵活度、可控性、性能
【vite 自动配置路由】
CODER-V
前端 javascript vue.js 前端 软件构建
手动配置路由,是一个没有技术含量又浪费时间的工作。本文将介绍vite构建的vue3项目如何编写一个自动配置路由的脚本。约定大于配置要想使用脚本完成路由的自动配置,我们就需要遵循以下目录规则:每一个页面对应一个包,当前包下的主页面命名为index.vue;每个包里必须配置一个page.js;在每一个page.js里边配置,额外的路由信息,比如:exportdefault{title:'商品',men
探索Zebra4J:构建高效企业级Web应用的微服务框架
叶准鑫Natalie
探索Zebra4J:构建高效企业级Web应用的微服务框架ZebraZebra4J/Zebra4Js基于SpringBoot的JavaWeb/Nodejs框架项目地址:https://gitcode.com/gh_mirrors/zebra/Zebra项目介绍在当今快速发展的技术环境中,构建高效、可扩展的企业级Web应用是每个开发团队的追求。Zebra4J作为一款基于SpringBoot的全新微服务
【JS】前端文件读取FileReader操作总结
程序员-张师傅
前端 前端 javascript 开发语言
前端文件读取FileReader操作总结FileReader是JavaScript中的一个WebAPI,它允许web应用程序异步读取用户计算机上的文件(或原始数据缓冲区)的内容,例如读取文件以获取其内容,并在不将文件发送到服务器的情况下在客户端使用它。这对于处理图片、文本文件等非常有用,尤其是当你想要在用户界面中即时显示文件内容或进行文件预览时。创建FileReader对象首先,你需要创建一个Fi
【前端】vue 报错:The template root requires exactly one element
程序员-张师傅
前端 前端 vue.js javascript
【前端】vue报错:Thetemplaterootrequiresexactlyoneelement在Vue.js中,当你遇到错误“Thetemplaterootrequiresexactlyoneelement”时,这通常意味着你的Vue组件的模板(template)根节点不是单一的元素。Vue要求每个组件的模板必须有一个根元素来包裹所有的子元素。这个错误通常出现在以下几种情况:模板中有多个并行
UI 自动化的页面对象管理神器 PO-Manager
TesterHome
原文由alex发表于TesterHome社区网站,点击原文链接可于作者直接交流。做UI自动化的同学都知道,UI自动化一个难点就是页面元素的变化,让自动化维护成为一个痛点。在此,为了减轻这个痛点,我在基于Page-Object模式的基础上开发了页面对象维护的工具。该工具为vscode的一个插件,可以通过vscode插件市场搜索PO-Manager来下载安装本文中的页面对象库文件基于json.一个元素
小程序通过js控制页面字体颜色属性
祈澈菇凉
需求:当电量少于百分之20的时候,显示电量的字体显示为红色。1:在wxml里面设置属性batStyle:style="{{item.batStyle}}"电量:{{item.battery}}%2:当复合逻辑条件的时候,在js里面carList[i].batStyle="color:red";success:function(res){constcarList=res.data.list;for(
戴尔笔记本win8系统改装win7系统
sophia天雪
win7 戴尔 改装系统 win8
戴尔win8 系统改装win7 系统详述
第一步:使用U盘制作虚拟光驱:
1)下载安装UltraISO:注册码可以在网上搜索。
2)启动UltraISO,点击“文件”—》“打开”按钮,打开已经准备好的ISO镜像文
BeanUtils.copyProperties使用笔记
bylijinnan
java
BeanUtils.copyProperties VS PropertyUtils.copyProperties
两者最大的区别是:
BeanUtils.copyProperties会进行类型转换,而PropertyUtils.copyProperties不会。
既然进行了类型转换,那BeanUtils.copyProperties的速度比不上PropertyUtils.copyProp
MyEclipse中文乱码问题
0624chenhong
MyEclipse
一、设置新建常见文件的默认编码格式,也就是文件保存的格式。
在不对MyEclipse进行设置的时候,默认保存文件的编码,一般跟简体中文操作系统(如windows2000,windowsXP)的编码一致,即GBK。
在简体中文系统下,ANSI 编码代表 GBK编码;在日文操作系统下,ANSI 编码代表 JIS 编码。
Window-->Preferences-->General -
发送邮件
不懂事的小屁孩
send email
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
动画合集
换个号韩国红果果
html css
动画 指一种样式变为另一种样式 keyframes应当始终定义0 100 过程
1 transition 制作鼠标滑过图片时的放大效果
css
.wrap{
width: 340px;height: 340px;
position: absolute;
top: 30%;
left: 20%;
overflow: hidden;
bor
网络最常见的攻击方式竟然是SQL注入
蓝儿唯美
sql注入
NTT研究表明,尽管SQL注入(SQLi)型攻击记录详尽且为人熟知,但目前网络应用程序仍然是SQLi攻击的重灾区。
信息安全和风险管理公司NTTCom Security发布的《2015全球智能威胁风险报告》表明,目前黑客攻击网络应用程序方式中最流行的,要数SQLi攻击。报告对去年发生的60亿攻击 行为进行分析,指出SQLi攻击是最常见的网络应用程序攻击方式。全球网络应用程序攻击中,SQLi攻击占
java笔记2
a-john
java
类的封装:
1,java中,对象就是一个封装体。封装是把对象的属性和服务结合成一个独立的的单位。并尽可能隐藏对象的内部细节(尤其是私有数据)
2,目的:使对象以外的部分不能随意存取对象的内部数据(如属性),从而使软件错误能够局部化,减少差错和排错的难度。
3,简单来说,“隐藏属性、方法或实现细节的过程”称为——封装。
4,封装的特性:
4.1设置
[Andengine]Error:can't creat bitmap form path “gfx/xxx.xxx”
aijuans
学习Android遇到的错误
最开始遇到这个错误是很早以前了,以前也没注意,只当是一个不理解的bug,因为所有的texture,textureregion都没有问题,但是就是提示错误。
昨天和美工要图片,本来是要背景透明的png格式,可是她却给了我一个jpg的。说明了之后她说没法改,因为没有png这个保存选项。
我就看了一下,和她要了psd的文件,还好我有一点
自己写的一个繁体到简体的转换程序
asialee
java 转换 繁体 filter 简体
今天调研一个任务,基于java的filter实现繁体到简体的转换,于是写了一个demo,给各位博友奉上,欢迎批评指正。
实现的思路是重载request的调取参数的几个方法,然后做下转换。
android意图和意图监听器技术
百合不是茶
android 显示意图 隐式意图 意图监听器
Intent是在activity之间传递数据;Intent的传递分为显示传递和隐式传递
显式意图:调用Intent.setComponent() 或 Intent.setClassName() 或 Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。
隐式意图;不指明调用的名称,根据设
spring3中新增的@value注解
bijian1013
java spring @Value
在spring 3.0中,可以通过使用@value,对一些如xxx.properties文件中的文件,进行键值对的注入,例子如下:
1.首先在applicationContext.xml中加入:
<beans xmlns="http://www.springframework.
Jboss启用CXF日志
sunjing
log jboss CXF
1. 在standalone.xml配置文件中添加system-properties:
<system-properties> <property name="org.apache.cxf.logging.enabled" value=&
【Hadoop三】Centos7_x86_64部署Hadoop集群之编译Hadoop源代码
bit1129
centos
编译必需的软件
Firebugs3.0.0
Maven3.2.3
Ant
JDK1.7.0_67
protobuf-2.5.0
Hadoop 2.5.2源码包
Firebugs3.0.0
http://sourceforge.jp/projects/sfnet_findbug
struts2验证框架的使用和扩展
白糖_
框架 xml bean struts 正则表达式
struts2能够对前台提交的表单数据进行输入有效性校验,通常有两种方式:
1、在Action类中通过validatexx方法验证,这种方式很简单,在此不再赘述;
2、通过编写xx-validation.xml文件执行表单验证,当用户提交表单请求后,struts会优先执行xml文件,如果校验不通过是不会让请求访问指定action的。
本文介绍一下struts2通过xml文件进行校验的方法并说
记录-感悟
braveCS
感悟
再翻翻以前写的感悟,有时会发现自己很幼稚,也会让自己找回初心。
2015-1-11 1. 能在工作之余学习感兴趣的东西已经很幸福了;
2. 要改变自己,不能这样一直在原来区域,要突破安全区舒适区,才能提高自己,往好的方面发展;
3. 多反省多思考;要会用工具,而不是变成工具的奴隶;
4. 一天内集中一个定长时间段看最新资讯和偏流式博
编程之美-数组中最长递增子序列
bylijinnan
编程之美
import java.util.Arrays;
import java.util.Random;
public class LongestAccendingSubSequence {
/**
* 编程之美 数组中最长递增子序列
* 书上的解法容易理解
* 另一方法书上没有提到的是,可以将数组排序(由小到大)得到新的数组,
* 然后求排序后的数组与原数
读书笔记5
chengxuyuancsdn
重复提交 struts2的token验证
1、重复提交
2、struts2的token验证
3、用response返回xml时的注意
1、重复提交
(1)应用场景
(1-1)点击提交按钮两次。
(1-2)使用浏览器后退按钮重复之前的操作,导致重复提交表单。
(1-3)刷新页面
(1-4)使用浏览器历史记录重复提交表单。
(1-5)浏览器重复的 HTTP 请求。
(2)解决方法
(2-1)禁掉提交按钮
(2-2)
[时空与探索]全球联合进行第二次费城实验的可能性
comsci
二次世界大战前后,由爱因斯坦参加的一次在海军舰艇上进行的物理学实验 -费城实验
至今给我们大家留下很多迷团.....
关于费城实验的详细过程,大家可以在网络上搜索一下,我这里就不详细描述了
在这里,我的意思是,现在
easy connect 之 ORA-12154: TNS: 无法解析指定的连接标识符
daizj
oracle ORA-12154
用easy connect连接出现“tns无法解析指定的连接标示符”的错误,如下:
C:\Users\Administrator>sqlplus username/
[email protected] :1521/orcl
SQL*Plus: Release 10.2.0.1.0 – Production on 星期一 5月 21 18:16:20 2012
Copyright (c) 198
简单排序:归并排序
dieslrae
归并排序
public void mergeSort(int[] array){
int temp = array.length/2;
if(temp == 0){
return;
}
int[] a = new int[temp];
int
C语言中字符串的\0和空格
dcj3sjt126com
c
\0 为字符串结束符,比如说:
abcd (空格)cdefg;
存入数组时,空格作为一个字符占有一个字节的空间,我们
解决Composer国内速度慢的办法
dcj3sjt126com
Composer
用法:
有两种方式启用本镜像服务:
1 将以下配置信息添加到 Composer 的配置文件 config.json 中(系统全局配置)。见“例1”
2 将以下配置信息添加到你的项目的 composer.json 文件中(针对单个项目配置)。见“例2”
为了避免安装包的时候都要执行两次查询,切记要添加禁用 packagist 的设置,如下 1 2 3 4 5
高效可伸缩的结果缓存
shuizhaosi888
高效可伸缩的结果缓存
/**
* 要执行的算法,返回结果v
*/
public interface Computable<A, V> {
public V comput(final A arg);
}
/**
* 用于缓存数据
*/
public class Memoizer<A, V> implements Computable<A,
三点定位的算法
haoningabc
c 算法
三点定位,
已知a,b,c三个顶点的x,y坐标
和三个点都z坐标的距离,la,lb,lc
求z点的坐标
原理就是围绕a,b,c 三个点画圆,三个圆焦点的部分就是所求
但是,由于三个点的距离可能不准,不一定会有结果,
所以是三个圆环的焦点,环的宽度开始为0,没有取到则加1
运行
gcc -lm test.c
test.c代码如下
#include "stdi
epoll使用详解
jimmee
c linux 服务端编程 epoll
epoll - I/O event notification facility在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linu
Hibernate对Enum的映射的基本使用方法
linzx0212
enum Hibernate
枚举
/**
* 性别枚举
*/
public enum Gender {
MALE(0), FEMALE(1), OTHER(2);
private Gender(int i) {
this.i = i;
}
private int i;
public int getI
第10章 高级事件(下)
onestopweb
事件
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
孙子兵法
roadrunners
孙子 兵法
始计第一
孙子曰:
兵者,国之大事,死生之地,存亡之道,不可不察也。
故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五
曰法。道者,令民于上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑
、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法
者,曲制、官道、主用也。凡此五者,将莫不闻,知之者胜,不知之者不胜。故校
之以计,而索其情,曰
MySQL双向复制
tomcat_oracle
mysql
本文包括:
主机配置
从机配置
建立主-从复制
建立双向复制
背景
按照以下简单的步骤:
参考一下:
在机器A配置主机(192.168.1.30)
在机器B配置从机(192.168.1.29)
我们可以使用下面的步骤来实现这一点
步骤1:机器A设置主机
在主机中打开配置文件 ,
zoj 3822 Domination(dp)
阿尔萨斯
Mina
题目链接:zoj 3822 Domination
题目大意:给定一个N∗M的棋盘,每次任选一个位置放置一枚棋子,直到每行每列上都至少有一枚棋子,问放置棋子个数的期望。
解题思路:大白书上概率那一张有一道类似的题目,但是因为时间比较久了,还是稍微想了一下。dp[i][j][k]表示i行j列上均有至少一枚棋子,并且消耗k步的概率(k≤i∗j),因为放置在i+1~n上等价与放在i+1行上,同理