ios Safari浏览器不支持 js 复制字符串
本来设计成:点击"复制"按钮,可以复制订单号到剪切板的.
可以发现在 ios Safari 浏览器中不起作用.
后来在http://stackoverflow.com/ 查到
参考:http://stackoverflow.com/questions/34045777/copy-to-clipboard-using-javascript-in-ios
解决方法:
判断操作系统类型,如果是 ios 则不显示"复制"按钮(因为显示了,也无用)
(1)判断操作系统类型
ClientOsInfo info =SpringMVCUtil.getMobileOsInfo(request); model.addAttribute("ostype",info.getOsType());
osType的取值为"Ios","Android","WINDOWS PHONE"
public static final String OSTYPE_ANDROID="Android"; public static final String OSTYPE_IOS="Ios"; public static final String OSTYPE_WP="WINDOWS PHONE"; /*** * 黑莓 */ public static final String OSTYPE_BLACKBERRY="BLACKBERRY";
(2)前端通过 freeMark 判断:
<#if !(ostype??)|| ostype!='Ios'> <div id="copy_order" >复制</div> <div id="copy_money" >复制</div> </#if>
SpringMVCUtil.getMobileOsInfo
方法实现如下
/** * 判断手机的操作系统 IOS/android/windows phone/BlackBerry * * @param UA * @return */ public static ClientOsInfo getMobilOS(String UA) { if (UA == null) { return null; } UA=UA.toUpperCase(); ClientOsInfo osInfo=new ClientOsInfo(); // 存放正则表达式 String rex = ""; // IOS 判断字符串 String iosString = " LIKE MAC OS X"; if (UA.indexOf(iosString) != -1) { if (StringUtil.isFind(UA, "\\([\\s]*iPhone[\\s]*;", Pattern.CASE_INSENSITIVE)) { osInfo.setDeviceType(DEVICE_TYPE_PHONE); } else if (StringUtil.isFind(UA, "\\([\\s]*iPad[\\s]*;", Pattern.CASE_INSENSITIVE)) { osInfo.setDeviceType(DEVICE_TYPE_PAD); } rex = ".*" + "[\\s]+(\\d[_\\d]*)" + iosString; Pattern p = Pattern.compile(rex, Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(UA); boolean rs = m.find(); if (rs) { String osVersion= m.group(1).replace("_", "."); osInfo.setVersion(osVersion); // System.out.println("Mobil OS is" + " IOS" +osVersion); osInfo.setOsTypeVersion(OSTYPE_IOS+"_" + osVersion); }else{ System.out.println("IOS"); osInfo.setOsTypeVersion(OSTYPE_IOS); } osInfo.setOsType(OSTYPE_IOS); return osInfo; } // Android 判断 String androidString = "ANDROID"; if (UA.indexOf(androidString) != -1) { if (StringUtil.isFind(UA, "\\bMobi", Pattern.CASE_INSENSITIVE)) { osInfo.setDeviceType(DEVICE_TYPE_PHONE); }else { osInfo.setDeviceType(DEVICE_TYPE_PAD); } rex = ".*" + androidString + "[\\s]*(\\d*[\\._\\d]*)"; Pattern p = Pattern.compile(rex, Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(UA); boolean rs = m.find(); if (rs) { String version=m.group(1).replace("_", "."); osInfo.setVersion(version); System.out.println("Mobil OS is " + OSTYPE_ANDROID + version); osInfo.setOsTypeVersion(OSTYPE_ANDROID+"_" + version); }else{ System.out.println("Android"); osInfo.setOsTypeVersion(OSTYPE_ANDROID); } osInfo.setOsType(OSTYPE_ANDROID); return osInfo; } // windows phone 判断 String wpString = "WINDOWS PHONE"; if (osTypeMatch(UA, osInfo, wpString)) return osInfo; // BlackBerry 黑莓系统判断 String bbString = "BLACKBERRY"; if (UA.indexOf(bbString) != -1) { rex = ".*" + bbString + "[\\s]*([\\d]*)"; Pattern p = Pattern.compile(rex, Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(UA); boolean rs = m.find(); if (rs) { System.out.println("Mobil OS is" + " BLACKBERRY " + m.group(1)); String version=m.group(1); osInfo.setVersion(version); osInfo.setOsTypeVersion(OSTYPE_BLACKBERRY+"_" + version); }else{ System.out.println("BLACKBERRY"); osInfo.setOsTypeVersion(OSTYPE_BLACKBERRY); } osInfo.setOsType(OSTYPE_BLACKBERRY); return osInfo; } if(UA.contains("LINUX")){//android if (StringUtil.isFind(UA, "\\bMobi", Pattern.CASE_INSENSITIVE)) { osInfo.setDeviceType(DEVICE_TYPE_PHONE); }else { osInfo.setDeviceType(DEVICE_TYPE_PAD); } Pattern p = Pattern.compile("U;\\s*(Adr[\\s]*)?(\\d[\\.\\d]*\\d)[\\s]*;",Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(UA); boolean result = m.find(); String find_result = null; if (result) { find_result = m.group(2); } if(StringUtil.isNullOrEmpty(find_result)){ osInfo.setOsTypeVersion(OSTYPE_ANDROID); return osInfo; }else{ osInfo.setVersion(find_result); osInfo.setOsTypeVersion(OSTYPE_ANDROID+"_"+find_result); return osInfo; } } //UCWEB/2.0 (iOS; U; iPh OS 4_3_2; zh-CN; iPh4) if(UA.matches(".*((IOS)|(iPAD)).*(IPH).*")){ if (StringUtil.isFind(UA, "[\\s]*iPh[\\s]*", Pattern.CASE_INSENSITIVE)) { osInfo.setDeviceType(DEVICE_TYPE_PHONE); }else { osInfo.setDeviceType(DEVICE_TYPE_PAD); } Pattern p = Pattern.compile("U;\\s*(IPH[\\s]*)?(OS[\\s]*)?(\\d[\\._\\d]*\\d)[\\s]*;",Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(UA); boolean result = m.find(); String find_result = null; if (result) { find_result = m.group(3); } if(StringUtil.isNullOrEmpty(find_result)){ osInfo.setOsTypeVersion(OSTYPE_IOS); osInfo.setOsType(OSTYPE_IOS); return osInfo; }else{ String version=find_result.replace("_", "."); osInfo.setVersion(version); osInfo.setOsTypeVersion(OSTYPE_IOS+"_"+version); osInfo.setOsType(OSTYPE_IOS); return osInfo; } } return osInfo; } /*** * 当移动端(手机或Pad)访问网页时获取移动端操作系统信息 * @param request * @return */ public static ClientOsInfo getMobileOsInfo(HttpServletRequest request){ String userAgent=request.getHeader("user-agent"); if(StringUtil.isNullOrEmpty(userAgent)){ userAgent=request.getHeader("User-Agent"); } ClientOsInfo info= getMobilOS(userAgent); if (null == info) {//为了通过单元测试 info = new ClientOsInfo(); } info.setUserAgent(userAgent); return info; }
相关推荐
使用其他浏览器访问,好嘛,IE跟safari都不兼容,返回错误”Invalid Date”。 想着估计是字符串格式的问题,改成’2016/11/11 11:11:11’再测试,结果正常,以为这样应该没问题了,再用手机浏览器继续访问,android...
主要介绍了iphone的safari浏览器中实现全屏浏览的方法,同时介绍了Add to Home Screen功能的实现方法,需要的朋友可以参考下
为了解决在safari浏览器video标签无法播放视频的问题
ios 字符串操作大全 截取字符串 子串 分割字符串 等等
ios--防照Safari浏览器视图切换效果
iOS版浏览器,嗅探功能强大的GM浏览器.txt打包整理.zip
iOS中Safari浏览器select下拉列表文字太长被截断的处理方法
可直接拖入项目中使用,可自定义浏览器中的前进、后退、刷新控件。
你可能忽视的iOS 8 Safari浏览器小技巧.docx
iOS 获取字符串首字母,输入一串字符串,运行得到字符串的首字母。
iOS图片浏览器(功能强大/性能优越).zip,iOS image browser / iOS 图片浏览器 (支持视频)
不支持:UC 系内核(典型的支付宝,大部分国产手机厂商的浏览器),IOS 上除 Safari 外的其他任何形式的浏览器(含 研究方法:【Recordapp的投资回报率】、【Android、iOS应用演示版】、【录音录音机】、【android、...
ios+android+h5复制剪切板
字符串的一些安全判断,比如,字符串是否为空,长度是否为0,,字符串是否有空格
iOS 字符串转中文非常好用特别简单,而且效率非常快很多中文搜索用的到
1、应用场景: 查看多张大图,比如查看风险商户的证明材料,图片支持滑动切换 2、文章:https://blog.csdn.net/z929118967/article/details/115077471 3、主要功能:进入查看器之后,可左右滑动查看上/下张,并...
支持内部打开浏览器,可打开网页、游戏、视屏。简单快捷
使用前请先在工程里添加 SDWebimage,MBProgress库,使用详情请查看博客: http://blog.csdn.net/l863784757/article/details/45396949
iOS 文件浏览器.zip,Finder-style iOS file browser written in Swift
赫敏野生动物园命令 插件,旨在添加/包装浏览器命令,以便与iOS Safari浏览器一起正常使用。 您可以阅读有关Hermione插件的更多信息。安装npm install hermione-safari-commands用法插件具有以下配置: enabled (可...