第一页 上页 11 12 13 14 15 16 17 18 19 20 下页 最后页 [ 显示模式: 摘要 | 列表 ]

JS 事件委托

[不指定 2015/07/27 13:23 | by 刘新修 ]

 JS 事件委托

XML/HTML代码
  1. <!DOCTYPE HTML>  
  2. <html>  
  3. <head>  
  4. <meta charset="utf-8" />  
  5. <title>js性能优化</title>  
  6. <style>  
  7. #list{ border:1px solid #000;}  
  8. </style>  
  9. </head>  
  10. <body id='list'>   
  11. <ul >  
  12. <li>精通css</li>  
  13. <li>精通js</li>  
  14. <li>精通html</li>  
  15. ......  
  16. </ul>  
  17. </body>  
  18. </html>   
  19. <script type="text/javascript">  
  20. (function(){  
  21. var a=document.getElementById('list');  
  22. a.addEventListener('click',function(e){  
  23. var b = e.target;   
  24. alert(b.innerHTML);  
  25. },false);  
  26. })();  
  27. </script>  

 

JavaScript代码
  1. var Expression = (function () {  
  2.     return {  
  3.         images: [{className:'face_1',text: '微笑'},  
  4.             {className:'face_2',text: '害羞'},  
  5.             {className:'face_3',text: '喜欢'},  
  6.             {className:'face_4',text: '快哭了'},  
  7.             {className:'face_5',text: '爱心'},  
  8.             {className:'face_6',text: '擦汗'},{className:'face_7',text: '愤怒'},  
  9.             {className:'face_8',text: '可爱'},{className:'face_9',text: '小可怜'},{className:'face_10',text: '尴尬'},{className:'face_11',text: '呲牙'},  
  10.             {className:'face_12',text: '红唇'},{className:'face_13',text: '难过'},{className:'face_14',text: '亲亲'},{className:'face_15',text: '委屈'},  
  11.             {className:'face_16',text: '疑惑'},{className:'face_17',text: '拥抱'},{className:'face_18',text: '再见'},{className:'face_19',text: '咖啡'},  
  12.             {className:'face_20',text: '礼物'},{className:'face_21',text: '玫瑰'}],  
  13.         initBox: function ($selector) {  
  14.             $.each(Expression.images, function () {  
  15.                 if(this.className=="face_1" || this.className=="face_11"){  
  16.                     return true;  
  17.                 }  
  18.                 var li = $('<li></li>').data('express'this.text).append('<i class="icon '+this.className +'"></i>');  
  19.                 $selector.append(li);  
  20.             });  
  21.         },  
  22.         replaceHtml: function ($selector) {  
  23.             var html = $selector.html();  
  24.             $.each(Expression.images, function () {  
  25.                 var re = new RegExp("\\["+this.text+"\\]","g");  
  26.                 html = html.replace(re, '<i class="icon ' + this.className + '"></i>');  
  27.             });  
  28.             $selector.html(html);  
  29.         }  
  30.     }  
  31.   
  32. })();  
  33. $(function () {  
  34.     $('body').on("tap"'[data-express]'function () {  
  35.         var txt = $(this).data('express'), text = $('textarea');  
  36.         text.val(text.val() + '[' + txt + ']');  
  37.         var len = text.val().length;  
  38.         $('#provide').text(len + "/240字");  
  39.         text.focus();  
  40.     });  
  41. });  
  42.   
  43. Expression.replaceHtml($('#chat_list'));  
  44. Expression.initBox($('#face'))  

如何判断微信内置浏览器,首先需要获取微信内置浏览器的User Agent,经过在 iPhone 上微信的浏览器的检测,它的 User Agent 是:

Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 MicroMessenger/5.0.1

所以通过识别 MicroMessenger 这个关键字来确定是否微信内置的浏览器了。

JAVA 判断是否微信浏览器

XML/HTML代码
  1. <%  
  2. String ua=((HttpServletRequest) request).getHeader("user-agent").toLowerCase();  
  3. if (ua.indexOf("micromessenger") > 0) {// 是微信浏览器  
  4.         validation = true;  
  5. }  
  6. %>  
  7.   
  8. /***************************************************  
  9. * 判断浏览器类型是否是IE,是则返回true,不是返回false    
  10. * ServletActionContext是struts2上下文对象    
  11. * @return boolean    
  12. **************************************************/    
  13. public   static   boolean  isIE(){    
  14.     return  ServletActionContext.getRequest().getHeader( "USER-AGENT" ).toLowerCase().indexOf( "msie" )>0?true:false ;  
  15. }  

方案一:正则表达式

通过观察规律,得出以下表达式:

Java代码
  1. ;\s?([^;]+?)\s?(Build)?/  

Java代码:

Java代码
  1. Pattern pattern = Pattern.compile(";\\s?(\\S*?\\s?\\S*?)\\s?(Build)?/");    
  2. Matcher matcher = pattern.matcher(userAgent);    
  3. String model = null;    
  4. if (matcher.find()) {    
  5.     model = matcher.group(1).trim();    
  6.     log.debug("通过userAgent解析出机型:" + model);    
  7. }  

以下为部分UserAgent,供测试,可以直接在EditPlus里验证。

 

Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; R8007 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; R8007 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 V1_AND_SQ_5.0.0_146_YYB_D QQ/5.0.0.2215

Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; SM-N9009 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.3 Mobile Safari/537.36

Mozilla/5.0 (Linux; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19

Mozilla/5.0 (Linux; U; Android 4.3; zh-CN; SM-N9009 Build/JSS15J) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 4.1.2; zh-CN; Coolpad 5891 Build/JZO54K) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.3.478 U3/0.8.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; Coolpad 5891 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 V1_AND_SQ_5.0.0_146_YYB2_D QQ/5.0.0.2215

Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53

Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257 QQ/5.0.0.165

Mozilla/5.0 (Linux; Android 4.3; zh-cn; SAMSUNG-GT-I9308_TD/1.0 Android/4.3 Release/11.15.2013 Browser/AppleWebKit534.30 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 SogouMSE,SogouMobileBrowser/3.2.3

Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0 baidubrowser/5.0.3.10 (Baidu; P1 4.2.2)

Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; SCH-I959 Build/JDQ39) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0

Mozilla/5.0 (Linux; Android 4.3; SM-N9009 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36 OPR/24.0.1565.82529

Mozilla/5.0 (Linux; U; Android 4.4.4; zh-CN; Nexus 4 Build/KTU84P) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0 baidubrowser/5.2.3.0 (Baidu; P1 4.0.4)

Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.3 Mobile Safari/537.36

Mozilla/5.0 (Linux; Android 4.0.4; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36

Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/535.19 (KHTML, like Gecko) Version/4.0 LieBaoFast/2.12.0 Mobile Safari/535.19

Opera/9.80 (Android; Opera Mini/7.0.31907/34.2499; U; zh) Presto/2.8.119 Version/11.10

Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HW-HUAWEI_C8825D/C8825DV100R001C92B943SP01; 480*800; CTC/2.0) AppleWebKit/534.30 Mobile Safari/534.30

Mozilla/5.0 (Linux; U; Android 4.4.2; zh-CN; SGP521 Build/17.1.2.A.0.314) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; Android 4.4.2; SGP521 Build/17.1.2.A.0.314) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Safari/537.36

Mozilla/5.0 (Linux; U; Android 4.0.4; zh-CN; HUAWEI C8825D Build/HuaweiC8825D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.8.5.442 U3/0.8.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Mozilla/5.0 (Linux; Android 4.4.2; zh-cn; SAMSUNG-SM-N9009 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36

Mozilla/5.0 (Linux; U; Android 4.2.2; zh-CN; HTC HTL22 Build/JDQ39) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; Android 4.3; SM-N9009 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36

Mozilla/5.0 (Linux; U; Android 4.2.1; zh-cn; AMOI A920W Build/JOP40D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Mozilla/5.0 (Linux; Android 4.3; SM-N9009 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.135 Mobile Safari/537.36

Mozilla/5.0 (Linux; U; Android 4.1.1; zh-CN; GT-N7100 Build/JRO03C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; R8007 Build/JLS36C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Huawei U8800    Android 2.3.3   Baidu 2.2   Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.2 Version/4.0 Mobile Safari/530.17        有用(0)

Huawei U8800    Android 2.3.3   UC 8.7  Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31        有用(0)

Meizu MX M031   Android 4.0.3   Chrome 18   Mozilla/5.0 (Linux; Android 4.0.3; M031 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19      有用(0)

Meizu MX M031   Android 4.0.3   Opera 12.1  Opera/9.80 (Android 4.0.3; Linux; Opera Mobi/ADR-1210241511) Presto/2.11.355 Version/12.10      有用(0)

Meizu MX M031   Android 4.0.3   -built-in *     Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30         有用(0)

Meizu MX M031   Android 4.0.3   Baidu 2.2   Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.2 Version/4.0 Mobile Safari/530.17        有用(0)

Meizu MX M031   Android 4.0.3   UC 8.7  Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31      有用(0)

Meizu M9    Android 4.0.3   QQ 3.7  MQQBrowser/3.7/Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M9 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30    Normal Mode     有用(0)

Meizu M9    Android 4.0.3   QQ 3.5  MQQBrowser/3.5/Adr (Linux; U; 4.0.3; zh-cn; M9 Build/Flyme 1.0.1;640*960)   Speed Mode  有用(0)

Meizu M9    Android 4.0.3   -built-in *     Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M9 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30       有用(0)

Meizu M9    Android 4.0.3   QQ 3.5  MQQBrowser/3.5/Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M9 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30    Normal Mode     有用(0)

Meizu MX M031   Android 4.0.3   Maxthon 2.7     Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30         有用(0)

Huawei U8800    Android 2.3.3   Maxthon 2.7     Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1         有用(0)

Huawei U8800    Android 2.3.3   QQ 3.7  MQQBrowser/3.7/Adr (Linux; U; 2.3.5; zh-cn; U8800 Build/U8800V100R001C00B528G002;480*800)   Speed Mode  有用(0)

Huawei U8800    Android 2.3.3   Dolphin 9.1     Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1         有用(0)

Huawei U8800    Android 2.3.3   QQ 3.7  MQQBrowser/3.7/Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1  Normal Mode     有用(0)

Huawei U8800    Android 2.3.3   -built-in *     Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Samsung P6200(GALAXY Tab)   Android 3.2     -built-in *     Mozilla/5.0 (Linux; U; Android 3.2; zh-cn; GT-P6200 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13      有用(0)

Huawei U8800    Android 2.3.3   Maxthon 4.0     Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1         有用(0)

Meizu MX M031   Android 4.0.3   Baidu 2.3   Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.3 Version/4.0 Mobile Safari/530.17 baidubrowser/023_1.41.3.2_diordna_069_046/uzieM_51_3.0.4_130M/1200a/963E77C7DAC3FA587DF3A7798517939D%7C408994110686468/1        有用(0)

Huawei U8800    Android 2.3.3   Baidu 2.3   Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/530.17 (KHTML, like Gecko) FlyFlow/2.3 Version/4.0 Mobile Safari/530.17 baidubrowser/042_1.6.3.2_diordna_008_084/IEWAUH_01_5.3.2_0088U/1001a/BE44DF7FABA8768B2A1B1E93C4BAD478%7C898293140340353/1         有用(0)

Huawei U8800    Android 2.3.3   Dolphin 9.2     Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; U8800 Build/HuaweiU8800) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1         有用(0)

HTC S720e(One X)    Android 4.0.3   -built-in *     Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HTC S720e Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30        有用(1)

HTC S720e(One X)    Android 4.0.3   UC 8.7  Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; HTC S720e Build/IMM76D) UC AppleWebKit/534.31 (KHTML, like Gecko) Mobile Safari/534.31         有用(0)

Meizu MX M031   Android 4.0.3   Dolphin Min 2.3     Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30         有用(0)

Meizu MX M031   Android 4.0.3   QQ 4.0  MQQBrowser/4.0/Mozilla/5.0 (Linux; U; Android 4.0.3; zh-cn; M031 Build/IML74K) AppleWebKit/533.1 (KHTML, like Gecko) Mobile Safari/533.1        有用(0)

Meizu M9    Android 4.0.3   QQ 3.7  MQQBrowser/3.7/Adr (Linux; U; 4.0.3; zh-cn; M9 Build/Flyme 1.0.1;640*960)

Meizu MX2 M040  Android 4.1     UC 9.4  Mozilla/5.0 (Linux; U; Android 4.1.1; zh-CN; M040 Build/JRO03H) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.4.1.362 U3/0.8.0 Mobile Safari/533.1      有用(0)

Meizu MX2 M040  Android 4.1     Chrome 31   Mozilla/5.0 (Linux; Android 4.1.1; M040 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36       有用(0)

Meizu MX2 M040  Android 4.1     猎豹 2.8  Mozilla/5.0 (Linux; Android 4.1.1; M040 Build/JRO03H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36       有用(0)

Meizu MX2 M040  Android 4.1     Baidu 4.1   Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/534.24 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.24 T5/2.0 baidubrowser/4.2.4.0 (Baidu; P1 4.1.1)       有用(0)

Meizu MX M031   Android 4.1     -built-in *     Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; M031 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30         有用(1)

Meizu MX M031   Android 4.1     UC 8.8  Mozilla/5.0 (Linux; U; Android 4.1.1; zh-CN; M031 Build/JRO03H) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/8.8.3.278 U3/0.8.0 Mobile Safari/534.31        有用(0)

Meizu MX2 M040  Android 4.1     QQ 4.1  Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/4.1 Mobile Safari/533.1         有用(0)

Meizu MX2 M040  Android 4.1     -built-in *     Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; M040 Build/JRO03H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30         有用(2)

Samsung P6200(GALAXY Tab)   Android 3.2     QQ HD 2.1   Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16       有用(0)

 

Samsung P6200(GALAXY Tab)   Android 3.2     UC HD 2.3   Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3) AppleWebKit/534.31 (KHTML, like Gecko) Chrome/17.0.558.0 Safari/534.31 UCBrowser/2.3.1.257

通过验证,成功率95%以上。

PHP 判断是否微信浏览器

PHP代码
  1. function is_weixin(){  
  2.    if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !==false){  
  3.        return true;  
  4.    }      
  5.    return false;  
  6. }  

JavaScript判断是否微信浏览器

JavaScript代码
  1. function is_weixin(){  
  2.    var ua=navigator.userAgent.toLowerCase();  
  3.    if(ua.match(/MicroMessenger/i)=="micromessenger"){  
  4.     return true;  
  5.    }else{  
  6.     return false;  
  7.    }  
  8. }  

 

1. 调用广告平台要对超链接字符串局部进行替换,如下:

 

2. 对广告HTTP接口需要改造成支持跨越,在回调方法内部插入JSON数据,回调名:Jsoncallback 如下:

Java代码
  1. @RequestParam(value = "Jsoncallback", required = true) String jsonCallBack,  
  2. JSONObject jsonObject = new JSONObject();  
  3. jsonObject.put("userList", userList);  
  4. String strResult = jsonCallBack+"("+jsonObject.toString()+")";  
  5. return strResult;  

 

网页可见区域宽:document.body.clientWidth

网页可见区域高:document.body.clientHeight
网页可见区域宽:document.body.offsetWidth (包括边线的宽)
网页可见区域高:document.body.offsetHeight (包括边线的宽)
网页正文全文宽:document.body.scrollWidth
网页正文全文高:document.body.scrollHeight
网页被卷去的高:document.body.scrollTop
网页被卷去的左:document.body.scrollLeft
网页正文部分上:window.screenTop
网页正文部分左:window.screenLeft
屏幕分辨率的高:window.screen.height
屏幕分辨率的宽:window.screen.width
屏幕可用工作区高度:window.screen.availHeight
屏幕可用工作区宽度:window.screen.availWidth
 
 
HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth
scrollHeight: 获取对象的滚动高度。
scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离
scrollWidth:获取对象的滚动宽度
offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度
offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置
offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置
event.clientX 相对文档的水平座标
event.clientY 相对文档的垂直座标
event.offsetX 相对容器的水平坐标
event.offsetY 相对容器的垂直坐标
document.documentElement.scrollTop 垂直方向滚动的值
event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量
 
IE,FireFox 差异如下:
 
IE6.0、FF1.06+:
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border
 
IE5.0/5.5:
clientWidth = width - border
clientHeight = height - border
offsetWidth = width
offsetHeight = height
 
(需要提一下:CSS中的margin属性,与clientWidth、offsetWidth、clientHeight、offsetHeight均无关)
网页可见区域宽: document.body.clientWidth
网页可见区域高: document.body.clientHeight
网页可见区域宽: document.body.offsetWidth (包括边线的宽)
网页可见区域高: document.body.offsetHeight (包括边线的高)
网页正文全文宽: document.body.scrollWidth
网页正文全文高: document.body.scrollHeight
网页被卷去的高: document.body.scrollTop
网页被卷去的左: document.body.scrollLeft
网页正文部分上: window.screenTop
网页正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的宽: window.screen.width
屏幕可用工作区高度: window.screen.availHeight
屏幕可用工作区宽度: window.screen.availWidth
-------------------
技术要点
本节代码主要使用了Document对象关于窗口的一些属性,这些属性的主要功能和用法如下。
要得到窗口的尺寸,对于不同的浏览器,需要使用不同的属性和方法:若要检测窗口的真实尺寸,在Netscape下需要使用Window的属性;在IE下需要 深入Document内部对body进行检测;在DOM环境下,若要得到窗口的尺寸,需要注意根元素的尺寸,而不是元素。
Window对象的innerWidth属性包含当前窗口的内部宽度。Window对象的innerHeight属性包含当前窗口的内部高度。
Document对象的body属性对应HTML文档的标签。Document对象的documentElement属性则表示HTML文档的根节点。
document.body.clientHeight表示HTML文档所在窗口的当前高度。document.body. clientWidth表示HTML文档所在窗口的当前宽度。
XML/HTML代码
  1. 实现代码  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4. <html xmlns="http://www.w3.org/1999/xhtml">  
  5. <head>  
  6. <title>请调整浏览器窗口</title>  
  7. <meta http-equiv="content-type" content="text/html; charset=gb2312">  
  8. </head>  
  9. <body>  
  10. <h2 align="center">请调整浏览器窗口大小</h2><hr>  
  11. <form action="#" method="get" name="form1" id="form1">  
  12. <!--显示浏览器窗口的实际尺寸-->  
  13. 浏览器窗口 的 实际高度: <input type="text" name="availHeight" size="4"><br>  
  14. 浏览器窗口 的 实际宽度: <input type="text" name="availWidth" size="4"><br>  
  15. </form>  
  16. <script type="text/javascript">  
  17. <!--  
  18. var winWidth = 0;  
  19. var winHeight = 0;  
  20. function findDimensions() //函数:获取尺寸  
  21. {  
  22. //获取窗口宽度  
  23. if (window.innerWidth)  
  24. winWidth = window.innerWidth;  
  25. else if ((document.body) && (document.body.clientWidth))  
  26. winWidth = document.body.clientWidth;  
  27. //获取窗口高度  
  28. if (window.innerHeight)  
  29. winHeight = window.innerHeight;  
  30. else if ((document.body) && (document.body.clientHeight))  
  31. winHeight = document.body.clientHeight;  
  32. //通过深入Document内部对body进行检测,获取窗口大小  
  33. if (document.documentElement  && document.documentElement.clientHeight && document.documentElement.clientWidth)  
  34. {  
  35. winHeight = document.documentElement.clientHeight;  
  36. winWidth = document.documentElement.clientWidth;  
  37. }  
  38. //结果输出至两个文本框  
  39. document.form1.availHeight.value= winHeight;  
  40. document.form1.availWidth.value= winWidth;  
  41. }  
  42. findDimensions();  
  43. //调用函数,获取数值  
  44. window.onresize=findDimensions;  
  45. //-->  
  46. </script>  
  47. </body>  
  48. </html>  
源程序解读
 
(1)程序首先建立一个表单,包含两个文本框,用于显示窗口当前的宽度和高度,并且,其数值会随窗口大小的改变而变化。
(2)在随后的JavaScript代码中,首先定义了两个变量winWidth和winHeight,用于保存窗口的高度值和宽度值。
(3)然后,在函数findDimensions ( )中,使用window.innerHeight和window.innerWidth得到窗口的高度和宽度,并将二者保存在前述两个变量中。
(4)再通过深入Document内部对body进行检测,获取窗口大小,并存储在前述两个变量中。
(5)在函数的最后,通过按名称访问表单元素,结果输出至两个文本框。
(6)在JavaScript代码的最后,通过调用findDimensions ( )函数,完成整个操作。
 

jQuery 获取屏幕高度、宽度

 

JavaScript代码
  1. ajax({  
  2.     url:"http://192.168.66.90:8080/php/test5.php",  
  3.     type:"POST",  
  4.     data:{GUID:"288350897",subFlag:"1"},  
  5.     dataType:"jsonp",  
  6.     callback:"Jsoncallback",  
  7.     success:function(data){  
  8.         if(data.sex==0){  
  9.             var userSex="帅哥";  
  10.         }  
  11.         if(data.sex==1){  
  12.             var userSex="美女";  
  13.         }  
  14.         if(data.switch==0){  
  15.             $(".Mbox .mailInfo .text_").html('<span style="color:#fbff83">'+data.mailInfo+'</span>封'+userSex+'来信');  
  16.             $(".Mbox").addClass("ty");  
  17.             mbox.addEventListener("webkitAnimationEnd",function(){ //动画结束时事件  
  18.             var timer=setInterval(function(){  
  19.             if(mbox.offsetTop==-60){  
  20.                 mbox.className='Mbox tyy';  
  21.                 clearInterval(timer)  
  22.             }  
  23.             },1000)  
  24.             },false);  
  25.         }  
  26.         //alert(data.switch)  
  27.   
  28. },  
  29.     fail:function(status){  
  30.     // 此处放失败后执行的代码  
  31.     }  
  32. });  
  33.   
  34. /***********************************
  35. 公共ajax方法支持跨越请求
  36. ************************************/  
  37. function ajax(options) {  
  38. options = options||{};  
  39. if (!options.url||!options.callback){  
  40. throw new Error("参数不合法");  
  41. }  
  42.   
  43. //创建 script 标签并加入到页面中  
  44. var callbackName=('jsonp_'+Math.random()).replace(".","");  
  45. var oHead=document.getElementsByTagName('head')[0];  
  46. options.data[options.callback]=callbackName;  
  47. var params=formatParams(options.data);  
  48. var oS=document.createElement('script');  
  49. oHead.appendChild(oS);  
  50.   
  51. //创建jsonp回调函数  
  52. window[callbackName]=function(json){  
  53. oHead.removeChild(oS);  
  54. clearTimeout(oS.timer);  
  55. window[callbackName]=null;  
  56. options.success&&options.success(json);  
  57. };  
  58.   
  59. //发送请求  
  60. oS.src=options.url+'?'+params;  
  61.   
  62. //超时处理  
  63. if(options.time){  
  64. oS.timer=setTimeout(function(){  
  65. window[callbackName]=null;  
  66. oHead.removeChild(oS);  
  67. options.fail&&options.fail({message:"超时"});  
  68. },time);  
  69. }  
  70. };  
  71.   
  72. //格式化参数  
  73. function formatParams(data){  
  74. var arr=[];  
  75. for(var name in data){  
  76. arr.push(encodeURIComponent(name)+"="+encodeURIComponent(data[name]));  
  77. }  
  78. return arr.join('&');  
  79. }  

 

Tags: ,

 

XML/HTML代码
  1. <!doctype html>  
  2. <html lang="en">  
  3. <head>  
  4.     <meta charset="UTF-8">  
  5.     <title>jQuery制作从左到右从新排列内容动画特效</title>  
  6.     <style>  
  7.     body{ height: 3000px; padding: 0; margin: 0; }  
  8.     div{ background: #000; margin: 20px 0; width: 100px; height: 30px; color: #fff; line-height: 30px; text-align: center; }  
  9.     </style>  
  10. </head>  
  11.  <script src="js/jquery.min.js"></script>  
  12.  <body>  
  13.     <div class="op1">111</div>  
  14.     <div class="op2">222</div>  
  15.     <div class="op3">333</div>  
  16.     <div class="op4">444</div>  
  17.     <div class="op5">555</div>  
  18.     <div class="op6">666</div>  
  19.     <div class="op7">777</div>  
  20.     <input type="button" value="stop!!!" />  
  21.     <script>  
  22.     var _width = ($(document).width() - $('div').width()) + "px";  
  23.   
  24.     var animateList=[   
  25.           function(){ $('.op1').delay(500).animate({marginLeft:_width},500,queueList);  },   
  26.           function(){ $('.op2').delay(300).animate({marginLeft:_width},500,queueList);  },   
  27.           function(){ $('.op3').delay(300).animate({marginLeft:_width},500,queueList);  },   
  28.           function(){ $('.op4').delay(700).animate({marginLeft:_width},500,queueList);  },   
  29.           function(){ $('.op5').delay(300).animate({marginLeft:_width},500,queueList);  },   
  30.           function(){ $('.op6').delay(200).animate({marginLeft:_width},500,queueList);  },   
  31.           function(){ $('.op7').delay(300).animate({marginLeft:_width},500,function(){ alert('动画队列结束'); } );}  
  32.     ];   
  33.       
  34.     $(document).queue('_queueList',animateList);   
  35.     var queueList=function(){   
  36.         $(document).dequeue('_queueList');   
  37.     };   
  38.     queueList();  
  39.   
  40.     $(':button').click(function(){  
  41.         $(document).clearQueue('_queueList');  
  42.     });  
  43.   
  44.     </script>  
  45.   
  46. </body>  
  47. </html>  

 

Linux复制本地文件到远程

[不指定 2015/06/17 10:06 | by 刘新修 ]

 scp -r /www/next.youyuan.com2 root@192.168.3.162:/www/

JSON 常用类型处理

[不指定 2015/06/16 11:54 | by 刘新修 ]

 

JavaScript代码
  1. var str='{"weatherinfo": [{"city": "北京","city_en": "beijing", "cityid": "101130101","date": "","date_y": "2014年1月23日", "wind6": "微风"}]}';  
  2. var obj=JSON.parse(str);  
  3. var yy=JSON.stringify(obj);  
  4. alert(yy)  

 

JS设置数组随机取值,支持多个不重复【实例】

XML/HTML代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>无标题文档</title>  
  6. </head>  
  7. <body Arrdata="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33">  
  8. </body>  
  9. <script type="text/javascript" src="http://code.liuxinxiu.com/lib/zepto/zepto-1.1.6.js"></script>  
  10. <script language="javascript">  
  11. //从一个给定的数组arr中,随机返回num个不重复项  
  12. function getArrayItems(arr, num) {  
  13.     //新建一个数组,将传入的数组复制过来,用于运算,而不要直接操作传入的数组;  
  14.     var temp_array = new Array();  
  15.     for (var index in arr) {  
  16.         temp_array.push(arr[index]);  
  17.     }  
  18.     //取出的数值项,保存在此数组  
  19.     var return_array = new Array();  
  20.     for (var i = 0; i<num; i++) {  
  21.         //判断如果数组还有可以取出的元素,以防下标越界  
  22.         if (temp_array.length>0) {  
  23.             //在数组中产生一个随机索引  
  24.             var arrIndex = Math.floor(Math.random()*temp_array.length);  
  25.             //将此随机索引的对应的数组元素值复制出来  
  26.             return_array[i] = temp_array[arrIndex];  
  27.             //然后删掉此索引的数组元素,这时候temp_array变为新的数组  
  28.             temp_array.splice(arrIndex, 1);  
  29.         } else {  
  30.             //数组中数据项取完后,退出循环,比如数组本来只有10项,但要求取出20项.  
  31.             break;  
  32.         }  
  33.     }  
  34.     return return_array;  
  35. }  
  36.   
  37. //测试  
  38. var ArrData=$("body").attr("Arrdata");  
  39. //var ArrList=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33];  
  40. var data=ArrData.split(",");//已经是数组,直接可以用str[0]去取了  
  41. //alert(str[1])  
  42. //alert(getArrayItems(arr,2));  
  43. var html=getArrayItems(data,2);  
  44. for(var i=0;i<html.length;i++){  
  45.     alert(html[i])  
  46. }  
  47. document.write(html)  
  48. </script>  
  49. </html>  

 

第一页 上页 11 12 13 14 15 16 17 18 19 20 下页 最后页 [ 显示模式: 摘要 | 列表 ]