js

js货jsp检测是否是手机等移动端访问

星期一, 七月 29th, 2013 | JAVA-and-J2EE, pagemaker | 一条评论

其他的就不多说了,直接上代码了,
JSP 版本

String ua=request.getHeader("User-Agent").toLowerCase();
if(ua.matches("(?i).*((android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino).*")||ua.substring(0,4).matches("(?i)1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-")) {
  response.sendRedirect("http://detectmobilebrowser.com/mobile");
  return;
}

JS版本:

(function(a,b){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))window.location=b})(navigator.userAgent||navigator.vendor||window.opera,'http://detectmobilebrowser.com/mobile');

更多不同语言的版本配置见开源的库: Detect Mobile Browsers | Open source mobile phone detection

Tags: , , ,

javascript判断变量是否定义(undefined)转换函数

星期四, 四月 12th, 2012 | ajax, html5 | 没有评论

在处理html5的页面取值的时候,发现当取不到的时候报错,js程序不再执行,直接写个修正函数处理
如下:

//修正未定义的变量
function checkUnfined(value){
	if(typeof(value)=='undefined'){
	return "";	
	}
	return value;	
}

话说判断是否未定义也是很常用的东东

Tags: , , ,

据说是检验是否是IE浏览器最简js代码

星期二, 十一月 23rd, 2010 | ajax | 一条评论

var isMSIE = /*@cc_on!@*/!1;

这就是一个测试浏览器的好方法,独有特性用来测试是不是IE,这可能是最短的了.

具体可以参照[Microsoft Jscript文档],下面是简单的介绍内容
@cc_on 文档
激活条件编译支持。
› Continue reading

Tags: , , ,

一个漂浮的广告浮层-通杀ff和IE

星期一, 九月 20th, 2010 | pagemaker | 没有评论

用的时候找到个,方便以后使用了,通杀ff和IE

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
34
35
36
<div id="ad" style="position:absolute">   
<a href="http://blog.i5a6.com/" target="_blank">   
<img src="http://www.feicha61.com/myextends/52dianying/images/02.jpg" border="0">   
</a></div>  
<script>   
var x = 50,y = 60   
var xin = true, yin = true   
var step = 1    
var delay = 10   
var obj=document.getElementById("ad")    
function floatAD() {   
 
var L=T=0   
var R= document.body.clientWidth-obj.offsetWidth   
var B = document.body.clientHeight-obj.offsetHeight   
 
obj.style.left = x + document.body.scrollLeft+"px"   
 
obj.style.top = y + document.body.scrollTop +"px"  
 
x = x + step*(xin?1:-1)    
if (x < L) { xin = true; x = L}    
 
if (x > R){ xin = false; x = R}    
 
y = y + step*(yin?1:-1)    
 
if (y < T) { yin = true; y = T }    
 
if (y > B) { yin = false; y = B }    
 
}   
var itl= setInterval("floatAD()", delay)    
obj.onmouseover=function(){clearInterval(itl)}    
obj.onmouseout=function(){itl=setInterval("floatAD()", delay)}   
</script>

Tags: , , ,

flash调用js的两种方法和示例文件

星期二, 十二月 30th, 2008 | pagemaker | 没有评论

兼容IE和Firefox浏览器:

在firefox下要注意下这个allowScriptAccess=”sameDomain” ;要在应用服务器下测试
直接打开页面可能报安全问题,在Apache或者tomcat下访问没有问题
或者在本地设置下安全策略也能,我电脑上什么都有就懒的去设置了

flash的as文件:

两种都能用,喜欢用下面一种,上面的就注销了,感兴趣的可以测试下

1
2
3
4
5
6
on (release) { 
//getURL("javascript:say('hello,world,你好吗?')");
 
import flash.external.ExternalInterface;
ExternalInterface.call("say","接口调用测试用例!");
}

对应的HTML文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>testflash</title>
 
 
<script language="JavaScript" type="text/javascript">
function  say(word){
    document.getElementById("word").innerHTML=word;
}
</script>
</head>
</head>
<body bgcolor="#ffffff">
<div id="word" style="color:#CC0000">初步测试应用</div>
<!-- 影片中使用的 URL-->
<!-- 影片中使用的文本-->
<!-- saved from url=(0013)about:internet -->
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="testflash" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="testflash.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="testflash.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="testflash" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>

Tags: , , ,

判断字符串是不是数字–java 和js版

星期二, 九月 16th, 2008 | JAVA-and-J2EE | 2条评论

今天有人问到,判断字符串是不是数字有什么方法,第一反应就是强制转换成Integer类型,若抛出异常就不是数字;
始终感觉不爽的方法;转念想可以用Pattern的方法,用正则表达式;问题解决了,不过还是想看看别人都是怎么解决的,网上查了下,还看了个用java类库自带的方法也还不错,不过要遍历;感觉还是用正则表达式的好;
把代码贴出来,下次用就直接复制了,呵呵

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
34
35
36
37
package com.liyz.num.test;
 
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class TestNum {
	public static void main(String[] args) {
 
		boolean num=isNumeric("gg");
		System.out.println(num);
		boolean num2=isNum("25p");
		System.out.println(num2);
 
	}
 
	//jdk method java类库自带的方法
	public static boolean  isNum(String msg){
		char[] msgchar=msg.toCharArray();
		for(char mc:msgchar){
			if(!Character.isDigit(mc)){
				return false;
			}
		}
		return true;
		}
	// base on pattern 用正则表达式
	public static boolean isNumeric(String str)
	{
	Pattern pattern = Pattern.compile("[0-9]*");
	Matcher isNum = pattern.matcher(str);
	if( !isNum.matches() )
	{
	return false;
	}
	return true;
	}
}

——————————————————————————
差点忘记了还有个js版本,原理差不多,感觉更简单了,有现成的函数调用
貌似code标签不是很好用,只好换下了加了个–在script前

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<--script type="text/javascript">
    //系统函数的调用,感觉最简单
    if(isNaN("25")){
      alert("请输入数字");
    }
    //基于正则表达式的自己写的函数
    function isdigit(s)
   {
     var r,re;
           re = /\d*/;
           r = s.match(re);
           return (r==s)?true:false;
    }
     var s1 = "123";
     var s2 = "45a";
     var s3 = "bcd";
     var s4 = "e6"
   alert("s1="+isdigit(s1)+"s2="+isdigit(s2)+"s3="+isdigit(s3)+"s4="+isdigit(s4));
 
    <--/script>

Tags: , ,

Rss

Search

文章分类

Meta