PageSourceSearch

http://www.uwes.com.cn/plugins/public/js/slidingVerification/sliding_tn_code.js?0321

js uwes.com.cn collected 2026-09-27 17:13:27 UTC 17,913 bytes, 468 lines download raw bytes

1/*! tncode 1.2 author:weiyingbin email:[email protected]
2//@ object webiste: http://www.39gs.com/archive/259.html
3//@ https://github.com/binwind8/tncode
4*/
5if(!document.getElementByClassName){
6    function hasClass(elem, cls) {
7      cls = cls || '';
8      if (cls.replace(/\s/g, '').length == 0) return false; //µ±clsûÓвÎÊýʱ£¬·µ»Øfalse
9      var ret = new RegExp(' ' + cls + ' ').test(' ' + elem.className + ' ');
10      return ret;
11    }
12    document.getElementByClassName = function(className,index){
13        var nodes=document.getElementsByTagName("*");//»ñÈ¡Ò³ÃæÀïËùÓÐÔªËØ£¬ÒòΪËû»áÆ¥ÅäÈ«Ò³ÃæÔªËØ£¬ËùÒÔÐÔÄÜÉÏÓÐȱÏÝ£¬µ«ÊÇ¿ÉÒÔÔ¼ÊøËûµÄËÑË÷·¶Î§£»
14        var arr=[];//ÓÃÀ´±£´æ·ûºÏµÄclassName£»
15        for(var i=0;i<nodes.length;i++){
16            if(hasClass(nodes[i],className)) arr.push(nodes[i]);
17        }
18        if(!index)index=0;
19        return index==-1?arr:arr[index];
20    };
21    function addClass( elements,cName ){
22       if( !hasClass( elements,cName ) ){
23          elements.className += " " + cName;
24       };
25    }
26    function removeClass( elements,cName ){
27       if( hasClass( elements,cName ) ){
28          elements.className = elements.className.replace( new RegExp( "(\\s|^)" + cName + "(\\s|$)" )," " ); // replace·½·¨ÊÇÌæ»»
29       };
30    }
31}
32
33function appendHTML(o,html) {
34    var divTemp = document.createElement("div"), nodes = null
35        , fragment = document.createDocumentFragment();
36    divTemp.innerHTML = html;
37    nodes = divTemp.childNodes;
38    for (var i=0, length=nodes.length; i<length; i+=1) {
39       fragment.appendChild(nodes[i].cloneNode(true));
40    }
41    o.appendChild(fragment);
42    nodes = null;
43    fragment = null;
44};
45
46
47
48var _ajax = function() {};
49_ajax.prototype = {
50    request: function(method, url, callback, postVars) {
51        var xhr = this.createXhrObject()();
52        xhr.onreadystatechange = function() {
53            if (xhr.readyState !== 4) return;
54            (xhr.status === 200) ?
55                callback.success(xhr.responseText, xhr.responseXML) :
56                callback.failure(xhr,status);
57        };
58        if (method !== "POST"&&postVars) {
59            url += "?" + this.JSONStringify(postVars);
60            postVars = null;
61        }
62        xhr.open(method, url, true);
63        xhr.send(postVars);
64    },
65    createXhrObject: function() {
66        var methods = [
67            function() { return new XMLHttpRequest(); },
68            function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
69            function() { return new ActiveXObject("Microsoft.XMLHTTP"); }
70        ],
71        i = 0,
72        len = methods.length,obj;
73        for (; i < len; i++) {
74            try {
75                methods[i];
76            } catch(e) {
77                continue;
78            }
79            this.createXhrObject = methods[i];
80            return methods[i];
81        }
82        throw new Error("ajax created failure");
83    },
84    JSONStringify: function(obj) {
85        return JSON.stringify(obj).replace(/"|{|}/g, "")
86                    .replace(/b:b/g, "=")
87                    .replace(/b,b/g, "&");
88    }
89};
90
91
92var tncode = {
93    _obj:null,
94    _tncode:null,
95    _img:null,
96    _img_loaded:false,
97    _is_draw_bg:false,
98    _is_moving:false,
99    _block_start_x:0,
100    _block_start_y:0,
101    _doing:false,
102    _mark_w:50,
103    _mark_h:50,
104    _mark_offset:0,
105    _img_w:240,
106    _img_h:150,
107    _result:false,
108    _err_c:0,
109    _onsuccess:null,
110    _check_type:0,
111    _bind:function(elm,evType,fn){
112        //event.preventDefault();
113        if (elm.addEventListener) {
114            elm.addEventListener(evType, fn,{ passive: false });//DOM2.0
115            return true;
116        }else if (elm.attachEvent) {
117            var r = elm.attachEvent(evType, fn);//IE5+
118            return r;
119        }
120    },
121    _block_start_move:function(e){
122        if(tncode._doing||!tncode._img_loaded){
123            return;
124        }
125        e.preventDefault();
126        var theEvent = window.event || e;
127        if(theEvent.touches){
128            theEvent = theEvent.touches[0];
129        }
130
131        var obj = document.getElementByClassName('slide_block_text');
132        obj.style.display="none";
133        tncode._draw_bg();
134        tncode._block_start_x = theEvent.clientX;
135        tncode._block_start_y = theEvent.clientY;
136        tncode._doing = true;
137        tncode._is_moving = true;
138    },
139    _block_on_move:function(e){
140        if(!tncode._doing)return true;
141        if(!tncode._is_moving)return true;
142        e.preventDefault();
143        var theEvent = window.event || e;
144        if(theEvent.touches){
145            theEvent = theEvent.touches[0];
146        }
147        tncode._is_moving = true;
148        //document.getElementById('msg').innerHTML = "move:"+theEvent.clientX+";"+theEvent.clientY;
149        var offset = theEvent.clientX - tncode._block_start_x;
150        if(offset<0){
151            offset = 0;
152        }
153        var max_off = tncode._img_w - tncode._mark_w;
154        if(offset>max_off){
155            offset = max_off;
156        }
157        var obj = document.getElementByClassName('slide_block');
158
159        obj.style.cssText = "transform: translate("+offset+"px, 0px)";
160        tncode._mark_offset = offset/max_off*(tncode._img_w-tncode._mark_w);
161        tncode._draw_bg();
162        tncode._draw_mark();
163    },
164    _block_on_end:function(e){
165        if(!tncode._doing)return true;
166        e.preventDefault();
167        var theEvent = window.event || e;
168        if(theEvent.touches){
169            theEvent = theEvent.touches[0];
170        }
171        tncode._is_moving = false;
172        tncode._send_result();
173    },
174    _send_result:function(){
175        var haddle = {success:tncode._send_result_success,failure:tncode._send_result_failure};
176        tncode._result = false;
177        var re = new _ajax();
178        var timestamp = Date.parse(new Date());
179        re.request('get','/dom/verify_check.php?username='+user_name+'&timestamp='+timestamp+'&ajax=2&tn_r='+tncode._mark_offset,haddle);
180    },
181    _send_result_success:function(responseText,responseXML){
182        tncode._doing = false;
183        if(responseText=='ok'){
184            var notic_msg = '';
185            if(_check_type == 1){
186                notic_msg = $weisiteLa.YanZhengTongGuoSub+'....';
187            }
188            tncode._tncode.innerHTML = notic_msg;
189            tncode._showmsg($weisiteLa.YanZhengTongGuo,1);
190            tncode._result = true;
191            document.getElementByClassName('hgroup').style.display="block";
192            setTimeout(tncode.hide,3000);
193            if(tncode._onsuccess){
194                tncode._onsuccess();
195            }
196        }else{
197            var obj = document.getElementById('tncode_div');
198            addClass( obj,'dd');
199            setTimeout(function(){
200                removeClass( obj,'dd');
201            },200);
202            tncode._result = false;
203            tncode._showmsg($weisiteLa.YanZhengShiBai);
204            tncode._err_c++;
205            if(tncode._err_c>5){
206                tncode.refresh();
207            }
208        }
209    },
210    _send_result_failure:function(xhr,status){
211
212    },
213    _draw_fullbg:function(){
214        var canvas_bg = document.getElementByClassName('tncode_canvas_bg');
215        var ctx_bg = canvas_bg.getContext('2d');
216        ctx_bg.drawImage(tncode._img, 0, tncode._img_h*2, tncode._img_w, tncode._img_h, 0, 0, tncode._img_w, tncode._img_h);
217    },
218    _draw_bg:function(){
219        if(tncode._is_draw_bg){
220            return;
221        }
222        tncode._is_draw_bg = true;
223        var canvas_bg = document.getElementByClassName('tncode_canvas_bg');
224        var ctx_bg = canvas_bg.getContext('2d');
225        ctx_bg.drawImage(tncode._img, 0, 0, tncode._img_w, tncode._img_h, 0, 0, tncode._img_w, tncode._img_h);
226    },
227    _draw_mark:function(){
228        var canvas_mark = document.getElementByClassName('tncode_canvas_mark');
229        var ctx_mark = canvas_mark.getContext('2d');
230        //ÇåÀí»­²¼
231        ctx_mark.clearRect(0,0,canvas_mark.width,canvas_mark.height);
232        ctx_mark.drawImage(tncode._img, 0, tncode._img_h, tncode._mark_w,tncode._img_h,tncode._mark_offset,0,tncode._mark_w, tncode._img_h);
233        var imageData = ctx_mark.getImageData(0, 0, tncode._img_w, tncode._img_h);
234          // »ñÈ¡»­²¼µÄÏñËØÐÅÏ¢
235          // ÊÇÒ»¸öһάÊý×飬°üº¬ÒÔ RGBA ˳ÐòµÄÊý¾Ý£¬Êý¾ÝʹÓà  0 ÖÁ 255£¨°üº¬£©µÄÕûÊý±íʾ
236          // È磺ͼƬÓÉÁ½¸öÏñËØ¹¹³É£¬Ò»¸öÏñËØÊǰ×É«£¬Ò»¸öÏñËØÊǺÚÉ«£¬ÄÇô data Ϊ
237          // [255,255,255,255,0,0,0,255]
238          // Õâ¸öһάÊý×é¿ÉÒÔ¿´³ÉÊÇÁ½¸öÏñËØÖÐRBGAͨµÀµÄÊý×éµÄ¼¯ºÏ¼´:
239          // [R,G,B,A].concat([R,G,B,A])
240        var data = imageData.data;
241        //alert(data.length/4);
242        var x = tncode._img_h,y=tncode._img_w;
243        for(var j = 0; j < x; j++) {
244            var ii = 1,k1=-1;
245            for(var k=0;k<y&&k>=0&&k>k1;){
246              // µÃµ½ RGBA ͨµÀµÄÖµ
247                var i = (j*y+k)*4;
248                k+=ii;
249                var r = data[i]
250                  , g = data[i+1]
251                  , b = data[i+2];
252                // ÎÒÃÇ´Ó×îÏÂÃæÄÇÕÅÑÕÉ«Éú³ÉÆ÷ÖпÉÒÔ¿´µ½ÔÚͼƬµÄÓÒÉϽÇÇøÓò£¬ÓÐһС¿éÔÚ
253                // ÈâÑ۵Ĺ۲ìÏ»ù±¾¶¼Êǰ×É«µÄ£¬ËùÒÔÎÒÔÚÕâÀï°Ñ RGB Öµ¶¼ÔÚ 245 ÒÔÉϵÄ
254                // µÄ¶¨ÒåΪ°×É«
255                // ´ó¼ÒÒ²¿ÉÒÔ×Ô¼º¶¨ÒåµÄ¸ü¾«È·£¬»òÕ߸ü¿í·ºÒ»Ð©
256                if(r+g+b<200) data[i+3] = 0;
257                else{
258                    var arr_pix = [1,-5];
259                    var arr_op = [250,0];
260                    for (var i =1; i<arr_pix[0]-arr_pix[1]; i++) {
261                        var iiii = arr_pix[0]-1*i;
262                        var op = parseInt(arr_op[0]-(arr_op[0]-arr_op[1])/(arr_pix[0]-arr_pix[1])*i);
263                        var iii = (j*y+k+iiii*ii)*4;
264                        data[iii+3] = op;
265                    }
266                    if(ii==-1){
267                        break;
268                    }
269                    k1 = k;
270                    k = y-1;
271                    ii = -1;
272                };
273            }
274        }
275        ctx_mark.putImageData(imageData, 0, 0);
276    },
277    _reset:function(){
278        tncode._mark_offset = 0;
279        tncode._draw_bg();
280        tncode._draw_mark();
281        var obj = document.getElementByClassName('slide_block');
282        obj.style.cssText = "transform: translate(0px, 0px)";
283    },
284    show:function(){
285        var obj = document.getElementByClassName('hgroup');
286        if(obj){
287            obj.style.display="none";
288        }
289        tncode.refresh();
290        tncode._tncode = this;
291        document.getElementById('tncode_div_bg').style.display="block";
292        document.getElementById('tncode_div').style.display="block";
293    },
294    hide:function(fun){
295        document.getElementById('tncode_div_bg').style.display="none";
296        document.getElementById('tncode_div').style.display="none";
297        typeof(fun) === 'function' && fun();
298    },
299    _showmsg:function(msg,status){
300        if(!status){
301            status = 0;
302            var obj = document.getElementByClassName('tncode_msg_error');
303        }else{
304            var obj = document.getElementByClassName('tncode_msg_ok');
305        }
306        obj.innerHTML = msg;
307        var setOpacity = function (ele, opacity) {
308            if (ele.style.opacity != undefined) {
309                ///¼æÈÝFFºÍGGºÍа汾IE
310                ele.style.opacity = opacity / 100;
311
312            } else {
313                ///¼æÈÝÀϰ汾ie
314                ele.style.filter = "alpha(opacity=" + opacity + ")";
315            }
316        };
317        function fadeout(ele, opacity, speed) {
318            if (ele) {
319                var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity || 100;
320                v < 1 && (v = v * 100);
321                var count = speed / 1000;
322                var avg = (100 - opacity) / count;
323                var timer = null;
324                timer = setInterval(function() {
325                    if (v - avg > opacity) {
326                        v -= avg;
327                        setOpacity(ele, v);
328                    } else {
329                        setOpacity(ele, 0);
330                        if(status==0){
331                            tncode._reset();
332                        }
333                        clearInterval(timer);
334                    }
335                }, 100);
336            }
337        }
338        function fadein(ele, opacity, speed) {
339            if (ele) {
340                var v = ele.style.filter.replace("alpha(opacity=", "").replace(")", "") || ele.style.opacity;
341                v < 1 && (v = v * 100);
342                var count = speed / 1000;
343                var avg = count < 2 ? (opacity / count) : (opacity / count - 1);
344                var timer = null;
345                timer = setInterval(function() {
346                    if (v < opacity) {
347                        v += avg;
348                        setOpacity(ele, v);
349                    } else {
350                        clearInterval(timer);
351                        setTimeout(function() {fadeout(obj, 0, 6000);},1000);
352                    }
353                }, 100);
354            }
355        }
356
357        fadein(obj, 80, 4000);
358    },
359    _html:function(){
360        var d = document.getElementById('tncode_div_bg');
361        if(d)return;
362        //&#x62D6;&#x52A8;&#x5DE6;&#x8FB9;&#x6ED1;&#x5757;&#x5B8C;&#x6210;&#x4E0A;&#x65B9;&#x62FC;&#x56FE;
363        var html = '<div class="tncode_div_bg" id="tncode_div_bg"></div><div class="tncode_div" id="tncode_div"><div class="loading">'+$weisiteLa.JiaZaiZhong+'</div><canvas class="tncode_canvas_bg"></canvas><canvas class="tncode_canvas_mark"></canvas><div class="hgroup"></div><div class="tncode_msg_error"></div><div class="tncode_msg_ok"></div><div class="slide"><div class="slide_block"></div><div class="slide_block_text">'+$weisiteLa.HuaDongYanZheng+'</div></div><div class="tools"><div class="tncode_close"></div><div class="tncode_refresh"></div><div class="tncode_tips"></div></div></div>';
364        var bo = document.getElementsByTagName('body');
365        appendHTML(bo[0],html);
366    },
367    _currentUrl:function(){
368        var list = document.getElementsByTagName('script');
369        for (var i in list) {
370            var  d=list[i];
371            if(d.src.indexOf('tn_code')!==-1){//jsÎļþÃûÒ»¶¨Òª´øÕâ¸ö×Ö·û
372                var arr = d.src.split('tn_code');
373                return arr[0];
374            }
375        }
376    },
377    refresh:function(){
378        var isSupportWebp = !![].map && document.createElement('canvas').toDataURL('image/webp').indexOf('data:image/webp') == 0;
379        var _this = this;
380        tncode._err_c = 0;
381        tncode._is_draw_bg = false;
382        tncode._result = false;
383        tncode._img_loaded = false;
384        var obj = document.getElementByClassName('tncode_canvas_bg');
385        obj.style.display="none";
386        obj = document.getElementByClassName('tncode_canvas_mark');
387        obj.style.display="none";
388        tncode._img = new Image();
389        var timestamp = Date.parse(new Date());
390        var img_url = "/dom/verify_check.php?username="+user_name+"&timestamp"+timestamp+"&ajax=1&t="+Math.random();
391        // var img_url = tncode._currentUrl()+"tncode.php?t="+Math.random();
392        if(!isSupportWebp){//ä¯ÀÀÆ÷²»Ö§³Öwebp
393            img_url+="&nowebp=1";
394        }
395        tncode._img.src = img_url;
396        tncode._img.onload = function(){
397            tncode._draw_fullbg();
398            var canvas_mark = document.getElementByClassName('tncode_canvas_mark');
399            var ctx_mark = canvas_mark.getContext('2d');
400            //ÇåÀí»­²¼
401            ctx_mark.clearRect(0,0,canvas_mark.width,canvas_mark.height);
402            tncode._img_loaded = true;
403            obj = document.getElementByClassName('tncode_canvas_bg');
404            obj.style.display="";
405            obj = document.getElementByClassName('tncode_canvas_mark');
406            obj.style.display="";
407        };
408        //alert("Hong Kong ForHarvest Technology and Culture Development Co. Limited".length);
409        obj = document.getElementByClassName('slide_block');
410        obj.style.cssText = "transform: translate(0px, 0px)";
411        obj = document.getElementByClassName('slide_block_text');
412        obj.style.display="block";
413    },
414    init:function(classObj,type,j){
415        var _this = this;
416        _check_type = type;
417        if(!tncode._img){
418            tncode._html();
419            var obj = document.getElementByClassName('slide_block');
420
421            tncode._bind(obj,'mousedown',_this._block_start_move);
422            tncode._bind(document,'mousemove',_this._block_on_move);
423            tncode._bind(document,'mouseup',_this._block_on_end);
424            tncode._bind(obj,'touchstart',_this._block_start_move);
425            tncode._bind(document,'touchmove',_this._block_on_move);
426            tncode._bind(document,'touchend',_this._block_on_end);
427
428            var obj = document.getElementByClassName('tncode_close');
429
430            tncode._bind(obj,'touchstart', function(){
431                _this.hide((j && j.hideFun && j.hideFun))
432            });
433            tncode._bind(obj,'click', function(){
434                _this.hide((j && j.hideFun && j.hideFun));
435            });
436            var obj = document.getElementByClassName('tncode_refresh');
437
438            tncode._bind(obj,'touchstart',_this.refresh);
439            tncode._bind(obj,'click',_this.refresh);
440
441
442            var objs = document.getElementByClassName(classObj);
443
444            _this.show();
445            // for (var i in objs) {
446            //     var o = objs[i];
447            //     //o.innerHTML = 'Í϶¯°´Å¥½øÐÐÑéÖ¤';
448            //     // tncode._bind(o,'touchstart',_this.show);
449            //     _this.show();
450            //     // tncode._bind(o,'click',_this.show);
451            // }
452        }
453    },
454    result:function(){
455        return tncode._result;
456    },
457    onsuccess:function(fn){
458        tncode._onsuccess = fn;
459    }
460};
461var $TN = tncode;
462var _old_onload = window.onload;
463window.onload = function(){
464    if(typeof _old_onload == 'function'){
465        _old_onload();
466    }
467    // tncode.init(tncode_class);
468};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.