js判断只允许手机浏览器打开,电脑无法访问怎么写,最后给个现成的,
你好,
可以通过 navigator.platform;来判断。里面包含了访问平台的名字,检测一下就可以了。
具体字符串可能包含Win,Mac,X11,Linux,如果不是这些多半就是手机了。
正巧我也在解决这个问题, 和你分享一下我的发现.
网上现在有三种观点, 一种是基于浏览器发送的 User-Agent, 但明显这种方法是行不通的, 虽然有人列出了大多数的手机发送的User-Agent, 但依然会有很多手机无法识别, 甚至有些手机浏览器不发送User-Agent, 而且也不能保证以后就不会出新牌子.
下面是一个php的例子, 看过之后你就会知道有多么不可靠.
1. function is_wap(){
2. $ua = strtolower($_SERVER['HTTP_USER_AGENT']);
3. $uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|sie|philips|panasonic|alcatel|lenovo|cldc|midp|wap|mobile)/i";
4. if(($ua == '' || preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER['REQUEST_URI']),'wap')){
5. return true;
6. }else{
7. return false;
8. }
9. }
另外一种是判断HTTP_ACCEPT, 这种应该相对可靠一点, 不过HTTP_ACCEPT是非常复杂的, 如果一般的不支持html的浏览器还好说, 你只要判断浏览器支持wml并且不支持html就可以, 但如果浏览器同时支持wml和html那就难办了, 低端手机可能会将wml放到html的前面, 但是很多高端手机或者智能手机对html的支持很好, 所以html也会出现在wml前面.
这是黑莓手机发送的HTTP_ACCEPT
application/vnd.rim.html,
text/html,
application/vnd.wap.xhtml+xml,
text/vnd.sun.j2me.app-descriptor,
image/vnd.rim.png,image/jpeg,
application/x-vnd.rim.pme.b,
application/vnd.rim.ucs,
image/gif;anim=1,
application/vnd.rim.jscriptc;v=0-8-8,
application/x-javascript,
application/vnd.rim.css;v=1,
text/css;media=handheld,
application/vnd.wap.wmlc;q=0.9,
application/vnd.wap.wmlscriptc;q=0.7,
text/vnd.wap.wml;q=0.7,
*/*;q=0.5
夸张吧? 不过的确是很标准的, 开发人员可以根据这个得到很多信息, 但很多手机都没这么标准的, 如果你查看IE或者FF的HTTP_ACCEPT你会发现它很短.
text/html,
application/xhtml+xml,
application/xml;q=0.9,
*/*;q=0.8
同样, 给你个php的例子.
if (isset($_SERVER['HTTP_ACCEPT']) &&
(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==FALSE)
&& (strpos($_SERVER['HTTP_ACCEPT'],'text/html')===FALSE ||
(strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml') <
strpos($_SERVER['HTTP_ACCEPT'],'text/html'))
)) {//手机访问
readfile('index.wml');
} else readfile('index.htm');
原理:如果浏览器支持WML、而且[不支持HTML]或[WML优先于HTML],则判定为手机。但实际上这个原理是不正确的.
还有一种是说判断网关或者IP什么的, 但我个人认为这个很不可靠, 手机的联网方式很多, 比如我开发的时候就是用模拟器的.这个应该不用什么例子了, REMOTE_ADDR 就足够了.
以上是我今天上午的工作成果, 但实际上还是没有找到完美的解决方案, 先写这么多, 有问题请补充或者发送消息给我, 如果你有更好的办法希望可以分享给我, 谢谢.
补充: 刚刚吃饭的时候想如果浏览器支持js判断屏幕尺寸也是个不错的方法. 还有, 楼主可能是个站长吧, 不知道懂不懂开发技术, 我是做php开发的, 如果需要帮助可以联系我.
versions:function(){
var u = navigator.userAgent, app = navigator.appVersion;
return {//移动终端浏览器版本信息
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
};
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
if(bs.versions.mobile){
if(bs.versions.android||bs.versions.iPhone||bs.versions.iPad||bs.versions.ios){
alert("手机");
}else{
alert("other");
}
}
建一个JS包,如mobile.js,在你不要让移动端访问的页面调用JS即可。
这是调用代码:<script src="mobile.js" type="text/javascript"></script>
下面是JS包,把如下代码全部贴进去。注意最后面的要改成你想跳转的地址。
(function(a,b){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|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|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头,根据http头做出判断
js判断只允许手机浏览器打开,电脑无法访问怎么写,最后给个现成的...
var bs={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion;return {\/\/移动终端浏览器版本信息 trident: u.indexOf('Trident') > -1, \/\/IE内核 presto: u.indexOf('Presto') > -1, \/\/opera内核 webKit: u.indexOf('AppleWebKit') > -1, \/\/苹果、谷歌...
asp中怎样实现判断是手机访问还是电脑浏览器访问?
如果是手机访问则跳转到wap.asp,如果电脑访问跳转到response.end。一、ASP是一种编程语言程序网站,一般只要挂载在服务器支持的网络上面直接输入网址即可打开,后缀名为“.asp”结尾结构。主页多数为“index.asp”格式。IE中本地调试一般输入“http:\/\/127.0.0.1”或“http:\/\/localhost\/index.asp”即可...
如何用JavaScript判断访问的来源是电脑还是手机,是什么浏览器_百度知 ...
你用手机上,就是手机版的官网,记住,用安全浏览器(如百度浏览器)它里面的导航都是安全,你就可以放心下了, java或者js如何判断访问的是手机还是电脑 <script type=text\/javascript> <!-- 平台、装置和作业系统 var system ={ win : false, mac : false, xll : false }; 检测平台 var p = navigator.pla...
网页怎么判断是电脑浏览还是手机终端
1、php网页是根据用户访问的设备分辨率来判断是电脑浏览器或者是手机浏览器的。2、例如php通过如下代码即可实现统计:<?php function check_wap() { if (isset($_SERVER['HTTP_VIA'])) return true; if (isset($_SERVER['HTTP_X_NOKIA_CONNECTION_MODE'])) return true; if (isset($_SERVER[...
Jquery 判断是不是 移动设备 浏览
首先,只判断是否是用 移动设备 浏览的:\/\/ Mobile 这里是只有不再 移动设备 上访问时,才给相应元素加上 mouseenter 和 mouseleave 事件。if (!navigator.userAgent.match(\/mobile\/i)) { ('.nav-dots span').mouseenter(function(){ (this).css('background-color', 'rgba(0, 0, 0...
java后台怎么判断是手机还是电脑访问网站
\/\/ 预定义可能的手机User-Agent关键词 private static String[] mobileUserAgents = { "Nokia", "SAMSUNG", "MIDP-2", "CLDC1.1", "SymbianOS",\/\/ ... 其他可能的手机User-Agent关键词 };\/\/ 方法:判断请求是否来自手机 public static boolean isMobileDevice(HttpServletRequest request) { ...
通过js判断当前访问的是电脑还是手机
bIsUc7 = sUserAgent.match(\/rv:1.2.3.4\/i) == "rv:1.2.3.4"; var bIsUc = sUserAgent.match(\/ucweb\/i) == "ucweb"; var bIsAndroid = sUserAgent.match(\/android\/i) == "android"; var bIsCE = sUserAgent.match(\/windows ce\/i)...
怎么让网站手机访问自动跳转到手机版?
更改浏览器UA标识即可,此处以QQ浏览器为例:一、打开QQ浏览器,在如下界面,点击我的 二、在如下界面,点击设置 三、在如下界面,点击浏览器UA标识 四、在如下界面,选择Android或者是iPhone,重启浏览器即可
.net 判断网页是手机还是电脑浏览
private void UserAgent() { string u = Request.ServerVariables["HTTP_USER_AGENT"]; Regex b = new Regex(@"android.+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...
jQuery判断浏览器是移动端还是电脑端自动跳转
一般手机qq浏览器是移动端。电脑的是pc段。还有就是看网页。wed的是手机端的。还有现在下载软体一般都自己能识别是电脑还是手机。还有现在的网页都自适用了。就是说同一个网页手机。电脑。平板都可以开启。没有变化。 浏览器如何判断当前浏览器是移动端还是pc端 var iOS; var isWechat; var isAndroid; va...
盖股扶他: 通过userAgent判断,navigator.userAgent可以获取当前的userAgent 然后通过匹配手机的常见userAgent进行识别 注:userAgent可以在大多数的手机浏览器上修改(例如选择访问电脑版、访问iphone版等选项就是改变userAgent,来骗过服务器获取其他设备访问的版本) 一般手机浏览器里都带有mobile字样(非协议规范)
德清县15786436175: 利用JS来判断页面是在手机端还是在PC端打开的方法 - ?
盖股扶他: window.screen.width可以获取到屏幕分辨率的宽,一般根据这个宽度来决定要展示PC还是手机端的布局;比如 小于600px 认定为用户是在手机端打开,大于或等于600px为在PC端打开;
德清县15786436175: JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器 - ?
盖股扶他: 你好,判断访问的来源的代码如下:if ( window.sidebar && "object" == typeof( window.sidebar ) && "function" == typeof( window.sidebar.addPanel ) ) // firefox { } else if ( document.all && "object" == typeof( window.external ) ) // ie { }不过要...
德清县15786436175: javaScript脚本,判断客户端为PC或者手持设备,如果是手机访问的话,停止加载本JS.PC端访问则正常加载. - ?
盖股扶他: $(function () {<br> var flag = isPC();<br><br> //如果是PC端,则执行doSomething函数<br> if (flag) {<br> doSomething();<br> }<br> });<br><br> function isPC() {<br> var userAgentInfo = navigator.userAgent;<br> var Agents = ["Android", "...
德清县15786436175: js判断网页是手机访问还是pc访问 - ?
盖股扶他: 1 2 3 4 5 6 7 8 9 10functionurlredirect() {varsUserAgent = navigator.userAgent.toLowerCase();if((sUserAgent.match(/(ipod|iphone os|midp|ucweb|android|windows ce|windows mobile)/i))) {// PC跳转移动端varthisUrl = window.location.href;...
德清县15786436175: JavaScript - js怎样判断手机浏览器 - ?
盖股扶他: JavaScript不管是判断PC浏览器还是手机浏览器,都是通过User Agent 来判断.<script type="text/javascript"> var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { trident: u.indexOf('Trident') > -1, //...
德清县15786436175: js 判断是在手机上运行还是pc上 - ?
盖股扶他: 你可以获取浏览器的userAgent.userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值.但是我建议使用是否支持某个只在移动端支持的属性来判断什么设备,因为userAgent是可以伪造的.
德清县15786436175: jsp做的项目,如何设置只允许手机访问? 在电脑上不允许访问·?
盖股扶他: 这个我也不清楚,根据我自己的猜测 ,客户端发过来的请求头会有客户端的浏览器信息,你可以根据返回来的浏览器信息作判断,电脑的浏览器跟手机的浏览器还是有区别的,比如可以通过名称匹配等等.
德清县15786436175: js如何判断是手机还是电脑浏览器? - ?
盖股扶他: 应该把JS 放在页面首页加载 就行<br><br>function IsPC() {<br> var userAgentInfo = navigator.userAgent;<br> var Agents = ["Android", "iPhone",<br> "SymbianOS", "Windows Phone",<br> "iPad", "iPod"];<br> var flag = true;<br> ...
德清县15786436175: 如何判断当前页面是否在微信浏览器中打开 - ?
盖股扶他: 本文实例讲述了JS判断当前页面是否在微信浏览器打开的方法.分享给大家供大家参考,具体如下:最近做很多HTML5的项目,很多页面会通过微信微博等SNS分享出去.在分享页面上提供公司APP的下载.但是在很多应用的浏览器中,点击...