admin管理员组文章数量:1558103
IE浏览器存在多种兼容问题
掌握技巧,不再害怕
用IE浏览器 打开网站首页,为何首页显示的是手机端页面?
注意: 当前使用的是 IE8及其以下版本
的ie浏览器
下面给出名称为:CheckMobile.java文件中部分代码(编译之前),具体示下:
JAVA代码块,如下:
...部分省略...
package com.fh.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 查看是否为手机登陆
*
*/
public class CheckMobile {
// \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔),
// 字符串在编译时会被转码一次,所以是 "\\b"
// \B 是单词内部逻辑间隔(连着的两个字母字符之间的逻辑上的间隔)
static String phoneReg = "\\b(ip(hone|od)|android|opera m(ob|in)i"
+ "|windows (phone|ce)|blackberry"
+ "|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp"
+ "|laystation portable)|nokia|fennec|htc[-_]"
+ "|mobile|up.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\\b";
static String tableReg = "\\b(ipad|tablet|(Nexus 7)|up.browser"
+ "|[1-4][0-9]{2}x[1-4][0-9]{2})\\b";
// 移动设备正则匹配:手机端、平板
static Pattern phonePat = Pattern.compile(phoneReg,
Pattern.CASE_INSENSITIVE);
static Pattern tablePat = Pattern.compile(tableReg,
Pattern.CASE_INSENSITIVE);
/**
* 检测是否是移动设备访问
*
* @Title: check
* @Date : 2014-7-7 下午01:29:07
* @param userAgent
* 浏览器标识
* @return true:移动设备接入,false: pc端接入
*/
public static boolean check(String userAgent) {
if (null == userAgent) {
userAgent = "";
}
// 匹配
Matcher matcherPhone = phonePat.matcher(userAgent);
Matcher matcherTable = tablePat.matcher(userAgent);
boolean flag_table =matcherTable.find();
//System.out.println(flag_table); //ie8下, 返回结果: true
//boolean flag_table2 =matcherTable.find(); //注意问题:对比前后结果
//System.out.println(flag_table2); //ie8下, 返回结果: false
boolean flag_Phone =matcherPhone.find();
//System.out.println(flag_Phone); //ie8下, 返回结果: false
//boolean flag_Phone2 =matcherPhone.find();
//System.out.println(flag_Phone2); //ie8下, 返回结果: false
if ( flag_Phone ) {
return true;
} else {
if ( flag_table ){
return true;}
}
return false;
}
}
...部分省略...
注意:
- 通过上面的代码注释部分,经过测试,在后台打印日志中发现:
同样的代码“matcherTable.find()”
,在经过“System.out.println(flag_table)”
打印操作之后,值就被改变为false
了,然后在ie8下
,才能正常显示PC端首页; - 相反,如果取消或注释掉所有的
matcherTable.find()
打印操作,那么matcherTable.find()
的返回值将一直为true
,也就是判断ie8为移动端设备,所以显示的是手机端首页;
这个问题真的很奇葩,暂时也没能找到别的解决办法;
临时解决办法:
- 执行一下
“System.out.println(flag_table)”
打印操作,也无妨。但终究不是解决之道。
另外,在360浏览器的兼容模式下,因为用户浏览器设置选择的IE内核不同,显示的效果也会不一样,具体演示,此处省略不做深究。。。
参考讨论:
为什么我的ie浏览器打开不分页面时变成手机版了呢 【https://answers.microsoft】
以上就是关于“IE8 打开网站首页显示的却是手机网站”的全部内容。
版权声明:本文标题:IE8 打开网站首页显示的却是手机网站 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727373737a1111464.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论