====== 关于Iscroll 5.0在chrome上无法滑动问题 ====== 关闭 PointerEvent 即可 全局关闭 chrome://flags/#enable-pointer-events 局部关闭 ====== 关于解决iframe在ios设备上无法滚动 ====== 这是safari的webkit内核特性 解决方案: 在iframe外包裹一层div并设置其css属性为: -webkit-overflow-scrolling:touch;overflow:auto; ====== 关于encode和decode ====== - 对于获取地址栏的函数:通常参数都要经过一次或者两次加码的,所以取到参数后要解码。 - 对于springMVC Controller层:用 @RequestParam("phoneNumber") String phoneNumber去取得数据的时候,其实phoneNumber已经被自动解码过一次了。由servlet中 request.getParameter里做的,它依据的编码格式根据服务器指定的,所以有时候为了防止 中文会乱码,每次加码会喜欢做两次,但是因为我们目前不会传中文。所以现在只加一次。 - 但有些方法是不会自动解码的,比如在js层用 $('#userForm').serialize() ,然后java层用UserRequest userRequest接受的时候就不会解码。 var getURLParam = function (name) { var search = window.document.location.search; var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g"); var matcher = pattern.exec(search); var items = null; if (null != matcher) { try { items = decodeURIComponent(decodeURIComponent(matcher[1])); } catch (e) { try { items = decodeURIComponent(matcher[1]); } catch (e) { items = matcher[1]; } } } return items; }; var encode = function (value) { var finalValue = null; if (null != value) { try { finalValue = encodeURIComponent(value); } catch (e) { finalValue = value; } } return finalValue; }; var decode = function (value) { var finalValue = null; if (null != value) { try { finalValue = decodeURIComponent(value); } catch (e) { finalValue = value; } } return finalValue; }; ====== 关于静态资源(尤其图片的处理) ====== 其实主流的解决 静态资源的方式确实用md5作为revision来解决缓存问题,比如腾讯前端在用的。tmt-workflow https://github.com/weixin/tmt-workflow/wiki/%E2%92%96-Reversion-%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88 他们工具,也是尽量值限制在html里面的静态资源能被脚本自动替换。 脚本替换的时候,只能替换那种本身静态html直接打开相对路径是正常的时候,才会成功。而css,ftl,html这三个文件里引用的静态资源路径都是相对完整的,所以可以用脚本去做。 如果也要求能替换js里面动态的引入静态资源,因为js脚本可以随意拼凑整个文件路径。grunt很难控制替换后文件是否有效,干脆就不做整个事情。 所以 大家以后就注意:别在js中动态引入图片等静态资源。 关于require里面引用js,因为脚本做了特殊处理,所以不会出问题。 ====== 关于form中只含一个input框的问题 ====== 默认情况下,单个输入框,无论按钮的type="submit"还是type="button"类型,回车即提交,那么如何去除表单的回车即提交 实现"回车!=提交"的问题,一般可以从"按钮的type类型" 和 "输入框个数"两处着手。 默认情况下,单个输入框,无论按钮的type="submit"还是type="button"类型,回车即提交。 1.当type="submit"时,无论有几个type="text"输入框,回车均表示提交。(submit) 2.当type="button"时,且存在多个输入框,回车不提交。(button) 3.解决单个输入框的回车即提交问题,参考第二点:可以增加一个input="text",隐藏; 然后type类型为button。 在实际应用中,input输入框很少只有一个的情况,那么只需记住第二条即可应对。 使用JS事件阻止表单提交 不在本文讨论范围,当然也是可以实现的。 ====== 关于微信浏览器的Bug ====== 知乎上说: 在页面刷新的时候通过js修改title时,可惜在iOS微信浏览器无效。 我现在发现 在新版的微信上,安卓的,微信调试工具,ios的微信浏览器上 都是无效的。 所以请使用如下方式解决 var $body = $('body'); document.title = 'the title you want to set'; var $iframe = $(""); $iframe.on('load',function() { setTimeout(function() { $iframe.off('load').remove(); }, 0); }).appendTo($body); ====== 关于iphone上的全屏显示 ====== apple-mobile-web-app-capable: Sets whether a web application runs in full-screen mode. Syntax Discussion If content is set to yes, the web application runs in full-screen mode; otherwise, it does not. The default behavior is to use Safari to display web content. You can determine whether a webpage is displayed in full-screen mode using the window.navigator.standalone read-only Boolean JavaScript property. Availability Available in iPhone OS 2.1 and later. Support Level Apple extension. ====== 关于页面模版 ====== 恒大金服 各种浏览器对应的UserAgent http://www.cnblogs.com/zhaoran/p/4264744.html