微信常见问题汇总及解决方案
来源:互联网 发布:ps淘宝店铺标志怎么做 编辑:程序博客网 时间:2024/04/28 13:57
防止页面缓存
<meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="pragma" content="no-cache">
UA= User Agent
用浏览器浏览网页时,浏览器会发送User Agent到网站服务器,
服务器可以根据User Agent识别用户的操作系统及版本,浏览器及版本.
然后判断用户浏览器可以支持的功能,从而返回给浏览器不同的代码,
但这种差异一般会很小,甚至没有,所以我们很难会觉察到它的存在
很多视频网站比如优酷都有对ipad进行优化,可以选择观看高清版视频,而iphone版就不行,能否在浏览器中加入ipad的ua让这些视频网站将设备识别为ipad跳转到ipad版以便能观看高清视频呢?
UA的含义
User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的
操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
一些网站常常通过判断 UA 来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装 UA 可以绕过检测。
通过UA,可以知道用户的手机类型,是moto的,还是三星的。是moto哪一款的,都可以明白。
通过UA,可以查看手机类型是什么的。 根据UA,可以向用户提供适合于他的机器的相关服务,如大
小合适的图片,格式准确的铃声等。
UA字串
标准格式为:浏览器标识 (操作系统标识; 加密等级标识;操作系统或CPU;浏览器语言) 渲染引擎标识;版本信息
浏览器标识
手机浏览器的标识是针对移动运营商的一个标 志。 某些地区会禁止某些标识的浏览器连接网络,因此造成浏览器无法联网。 当你的手机浏览器出现无法连接某些网站或者无 法联网的情况时,可以尝试修改浏览器标识
加密等级标识
N: 表示无安全加密
I: 表示弱安全加密
U: 表示强安全加密
浏览器语言
设置 >语言和键盘设置>手机中指定的语言
操作系统标识
FreeBSD 类unix 操作系统Mac 苹果电脑的操作系统Mac OS系统Solaris Sun Microsystems研发的计算机操作系统LinuxWindows
渲染引擎
渲染引擎,其实就是网页浏览器的排版引擎,也被称为样版引擎。它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要渲染引擎浏览器使用 AppleWebKit 渲染引擎,格式为:AppleWebKit /版本号
版本信息
显示浏览器真实版本信息,格式为: Version/版本号
Android标准的手机浏览器UA
Mozilla/5.0 (Linux; U;Android 2.3.5;zh-cn;P331Build/GRJ22) AppleWebKit/533.1 (KHTML,like Gecko) Version/4.0 Mobile Safari/533.1
- Android版本:这是浏览器拼接UA之时,取的系统(Build.VERSION.RELEASE)字串,位于标准UA中用红色标识的2.3.5处,可以通过 设置 –》关于手机–》Android版本 进行查看,也就是浏览器的Android版本字段和系统的Build.VERSION.RELEASE 字串保持一致,如果提需求、故障请提交相应维护同事, 不过一般该处使用系统默认不会有问题;
语言和国家:这是系统当前使用语言和国家,位于标准UA中用绿色标识的zh-cn处。前者是语言名,后者是国家名,这点系统默认一般是正确的,和需求不同往往是因为你现在所使用语言及其国家不同而造 成的,不应该算是故障,这点要注意;
外部型号:这部分字串每个项目都会更改且是来回沟通需求成本最高的地方。这部分浏览器取的系统(Build.MODEL)字串,位于标准UA中用蓝色标识的P331处,可以通过 设置 –》关于手机–》型号进行查看,也就是浏览器的外部型号和系统的Build.MODEL 字串保持一致;
版本号:这部分字串一般是带的系统字串,复现的概率一般,浏览器取的系统(Build.ID)字串,是由该项目SCM同事负责维护的,位于标准UA中用紫红标识的GRJ22处,也就是浏览器的版本号和系统的Build.ID字串保持一致,如果提需求和故障请直接提交到该项目SCM处;
- 其余:浏览器负责,一般是固定的。电信项目中浏览器的UA绝大部分字串是由浏览器来写死的,有一处例外,以一个电信项目中浏览器UA需求为例。
- 电信项目中浏览器的UA:
Mozilla/5.0 (Linux;U;Android 2.2.2;zh-cn;ZTE-C_N880S Build/FRF91) AppleWebkit/531.1(KHTML, like Gecko) Version/4.0 Mobile Safari/531.1
标题更新
在切换页面路由之后需在 body 里面添加 iframe,随后移除掉 iframe 即可,代码如下
// iPhone,iPod,iPad下无法更新标题if (/ip(hone|od|ad)/i.test(window.navigator.userAgent)) { let iframe = document.createElement('iframe') let body = document.querySelector('body') iframe.style.display = 'none' iframe.src = '/favicon.ico' iframe.onload = () => { setTimeout(() => { iframe.remove() }, 10) } body.appendChild(iframe)}
关于单页面修改title一事
先道出问题:当页面载入时,微信顶部 title 获取并显示,之后怎么用JS修改 title ,无效。
这个是针对IOS出现的 hack ,Android是有效的。 貌似是IOS的webview没有监听titlechange事件。 目前的处理就是使用重新载入页面的形式来唤醒页面的title有关事件。
这里使用在页面重载了个iframe的形式:
//解决iOS设备修改title不起作用的bug function set_title(title) { document.title = title; if (!ua.is_idevice) return; //随便访问iframe访问一个网页,title就可以刷新了 var $iframe = $("<iframe style='display:none;' src='/favicon.ico'></iframe>"); $iframe.on('load',function() { setTimeout(function() { $iframe.off('load').remove(); }, 0); }).appendTo($body); }
iOS Safari 中绑定点击事件失效的解决办法
因为项目里的HTML是使用了模板引擎塞进去的,固然统一的事件会用绑定,也可在模板引擎后面添加。 我这里使用了全局事件绑定:
// 是否为系统分发礼包 is_system_activity ? to_system_activity() : distribute_activity(); $("body").on("touchstart", ".explain", function() { if (_hmt) { _hmt.push(["_trackEvent", "点击次数", "查看游戏规则"]) } $("#game-info").show(); })
我这里使用了.on()事件,在IOS测试的时候,无效; 我在想是不是.on事件太新了,啊哈哈哈哈啊哈固然不是啦!!! 我就直接使用了.bind()事件来绑定,测试没问题。
那么现在问题来了,到底为什么会这样呢?
问题描述 当使用委托给一个元素添加click事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件会失效。
解决办法 解决办法有 4 种可供选择:
将 click 事件直接绑定到目标元素(即 .target)上 将目标元素换成 或者 button 等可点击的元素 将 click 事件委托到非 document 或 body 的父级元素上 给目标元素加一条样式规则 cursor: pointer; 推荐后两种。从解决办法来看,推测在 safari 中,不可点击的元素的点击事件不会冒泡到父级元素。通过添加 cursor: pointer 使得元素变成了可点击的了。
- 微信常见问题汇总及解决方案
- 计算机维护常见问题汇总及解决方案
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总 .
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- Android WebView常见问题及解决方案汇总
- H5项目常见问题汇总及解决方案
- ALS算法讲解
- QGraphics坐标
- MFC基于对话框添加菜单栏
- Web笔记
- Ubuntu 16.04 安装 MySQL
- 微信常见问题汇总及解决方案
- java多线程—常用的两种实现多线程方式
- HTML常用标签及其对应的属性【一】
- mysql表水平拆分和分区分表
- angular.forEach没有跳出循环语句的解决方法
- PAT-A-1014. Waiting in Line (30)
- CKEditor的下拉选项在Modal中无法正常显示(IE only)
- Linux常用设置
- Java基础:Scanner