1、点击返回若没有之前页面则跳转到规定页面
首先是客户需求中要求——单个分享到微信的页面,点击返回可以跳转到网站首页。
期间这个功能有和客户探讨过,能否在页面中添加回到首页按钮进行跳转。
可是这种方式无法作用到每个页面,并且指明需要该功能的分享页面没有可以放得下一个图标,又不影响美观的地方了。于是,本人只好是寻求度娘。度娘上也尽是一些打着擦边球的功能。
所以通过自己的尝试 有了以下代码:
//返回之前没页面则返回首页function pushhistory() { //获取浏览器历史记录栈中的记录个数 //由于页面加载的时候就会将当前页面压入栈中 所以判断是否小于2 if (history.length 0)console.log(arr.join(',')) }}
其实还有点不满意的就是 没办法自动获取到参数的名字不然就可以这样使用:
var a = 123, b = 333, obj = { name: name, content: ... } lll(a, b, obj)//调试信息为: a:123,b:123 //obj: //{ name: name, content: ... }
看起来是不是就更加明白点了?
3、 获取浏览器定位信息(支持移动端)
接到很多的项目都是移动端定制开发的,所以经常会用到需要定位当前地点的信息。
可是网上很多的接口都是需要引用一段外部js的比如百度的api,微信的api等等。
我接下来介绍一种不需要引用外部js,只需要向外部api链接提交参数就可以获取定位的方法:
if (getcookie('position') == ) { if (navigator.useragent.indexof(micromessenger) > -1) {//判断是否是微信端,具体视情况而定 navigator.geolocation.getcurrentposition(function getpositionsuccess(position) { //通过html5的navigator.geolocation接口 获取浏览器的当前定位 (移动端最准确,pc会有较大偏差) var lat = position.coords.latitude;//获取过来的当前纬度 var lng = position.coords.longitude;//获取过来的当前经度 var arr = [] arr.push(lng) arr.push(lat) //alert(position) $.ajax({ type: get, url: http://api.map.baidu.com/geocoder/v2/?ak=om55dvwvwluu7shkz7uy8m6e&callback=renderreverse&location= + lat + , + lng + &output=json&pois=1,//将经纬度通过地址栏参数的形式 传给百度提供的api beforesend: function () { //由于这段过程需要些时间 所以最好页面上有加载提示 iosload()//本人写的页面加载动画 }, data: {}, datatype: jsonp,//由于是跨域传输 所以需要以jsonp的形式进行传输 jsonpcallback: renderreverse,//类似跨域传输的标识 需要接收方和传输方做好统一 success: function (data) { ios.hide(); //alert(data) $(#myposition).html(我在: + data.result.addresscomponent.city) setcookie(position, data.result.addresscomponent.city, 24 * 60 * 30) } }) }, function (error) { //alert(error.message); }, {}) }}
这段代码是本人实际项目中的一段代码,由于需要判断是否已经获取到定位信息,不能每次页面加载都进行一次获取 所以我用cookie将定位信息保存了起来
刚开始的时候判断是否有当前的定位信息cookie,没有。再判断是否是在移动端(因为项目是微信端的,所以我这里只是做了微信端的验证)
然后再调用html5提供的接口参数 进行数据传输,将百度返回过来的jsonp进行处理。由于我项目里只需要获取定位的城市信息 所以这里只是举了获取城市的例子。
4、 获取字符串数值部分
因为项目上我只负责功能的实现,所以很多页面并不是我自己搭的,但是 又会有些生手来搭出一些很不好获取标签内的数值的情况。
比如:
原价998现在只要 99.8!
像这种页面,有时候要获取里面的998或者98。就会变的有点麻烦。
通过我下面提供的方法,可以很方便的解决这种情况
function getnum(text) { var value = text.replace(/[^(0-9).]/ig, ); return parsefloat(value); }
这段方法很简短,实质上就是通过正则去匹配。将非数字或者小数点的字符替换成空的字符串(实际上就是删除)
这样返回过来的数据就是我们想要的数字,我最后又进行了一次转换为浮点型的操作,这是为了方便将数据进行后期处理。比如保留两位小数,四舍五入 等等。
5、获取设备信息
//#region 获取设备信息var browser = { 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.*/), //是否为移动终端 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, //是否为iphone或者qqhd浏览器 ipad: u.indexof('ipad') > -1, //是否ipad webapp: u.indexof('safari') == -1, //是否web应该程序,没有头部与底部 weixin: u.indexof('micromessenger') > -1, //是否微信 (2015-01-22新增) qq: u.match(/\sqq/i) == qq //是否qq }; }(), language: (navigator.browserlanguage || navigator.language).tolowercase()}//实际使用的时候如下:if (browser.versions.webkit) { //为苹果 谷歌内核执行的代码...}//#endregion
这里也是分享一个不是我写的 也是在网上看到的一个封装成对象的判断设备信息的方式。
个人觉得很好用,于是也拿来跟大家分享一下。
字符串扩展方法——以下介绍的都是对string类型数据进行附加的方法
1.将字符串超出指定长度部分隐藏
/*将字符串以指定长度显示,多余部分以省略号显示(len--显示长度defaultstr--若字符串为空显示的字符串)*/string.prototype.splitstring = function (len, defaultstr) { var result = ; var str = this.tostring() if (str) { str = str.trim() if (str.length > len) { result = str.substring(0, len) + ...; } else { result = str; } } else { result = defaultstr; } return result;}
注释已经够简单明了了。不理解的可以留言,博主看到一定回复。
2.将字符串长度减一
//长度减一 string.prototype.dellast = function () { return this.substring(0, this.length - 1) }
有些人可能会觉得 这个方法有点脱裤子放屁的嫌疑,其实真正的项目中 会经常需要这个操作。
与其写一段长长的substring 不如咱们写个方法将代码精简,并且在码代码的时候 也很方便 直接在对应的字符串后面 轻轻一点,选择dellast就行。
一句话,用过都说好!
3.将数字型字符串补全指定长度
//给数字型字符串固定指定长度string.prototype.addzero = function (n) { var num = this var len = num.tostring().length; while (len < n) { num = '0' + num; len++; } return num;}
看注释可能有点不理解 其实就是加入这个字符串是 2,通过这个扩展方法 可以这么操作 2.addzero(2)
那么返回过来的就是02这样的字符串。
用过都说好!
4.将数据库datetime类型转换为date
string.prototype.dtd = function () { return new date(date.parse(this.tostring().replace(/-/g, /))) }
5.用户昵称省略
//用户昵称省略 string.prototype.telhide = function () { var name = this return name.substr(0, 1) + **** + name.substring(name.length - 1, name.length) }
以上就是本文的全部内容,希望对大家的学习有所帮助。