软件分析与设计
Pages: 1/5 First page 1 2 3 4 5 Next page Final page [ View by Articles | List ]
Dec 8
html5中的GPS定位功能主要用的是getCurrentPosition, 该方法封装在 navigator.geolocation 属性里,是 navigator.geolocation 对象的方法。

getCurrentPosition()函数简介
getCurrentPosition(successCallback,errorCallback,positionOptions)
successCallback

表示调用getCurrentPosition函数成功以后的回调函数,该函数带有一个参数,对象字面量格式,表示获取到的用户位置数据。该对象包含两个属性 coords 和 timestamp。其中 coords 属性包含以下7个值:

accuracy:精确度
latitude:纬度
longitude:经度
altitude:海拔
altitudeAcuracy:海拔高度的精确度
heading:朝向
speed:速度
errorCallback

和 successCallback 函数一样带有一个参数,对象字面量格式,表示返回的错误代码。它包含以下两个属性:

1、message:错误信息
2、 code:错误代码。

其中错误代码包括以下四个值:

1、UNKNOW_ERROR:表示不包括在其它错误代码中的错误,这里可以在 message 中查找错误信息
2、PERMISSION_DENIED:表示用户拒绝浏览器获取位置信息的请求
3、 POSITION_UNAVALIABLE:表示网络不可用或者连接不到卫星
4、TIMEOUT:表示获取超时。必须在options中指定了timeout值时才有可能发生这种错误
positionOptions

positionOptions 的数据格式为JSON,有三个可选的属性:

1、enableHighAcuracy — 布尔值: 表示是否启用高精确度模式,如果启用这种模式,浏览器在获取位置信息时可能需要耗费更多的时间。
2、timeout — 整数: 表示浏览需要在指定的时间内获取位置信息,否则触发errorCallback。
3、maximumAge — 整数/常量: 表示浏览器重新获取位置信息的时间间隔。
getCurrentPosition()函数定位应用

点击按钮,就可以回提示是否获取当前位置,允许之后,可以获取你所在位置的经纬度!
Dec 8

 对于手机网站建设,总结了如下几点注意:

1、 安卓浏览器看背景图片,有些设备会模糊。

用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢?

经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页,这样字会非常小,所以苹果当初就把iPhone 4的960640分辨率,在网页里只显示了480320,这样devicePixelRatio=2。现在android比较乱,有1.5的,有2的也有3的。

想让图片在手机里显示更为清晰,必须使用2x的背景图来代替img标签(一般情况都是用2倍)。例如一个div的宽高是100100,背景图必须得200200,然后background-size:contain;,这样显示出来的图片就比较清晰了。

代码可以如下:

    background:url(../images/icon/all.png) no-repeat center center;   -webkit-background-size:50px 50px;   background-size: 50px 50px;display:inline-block; width:100%; height:50px;   

或者指定 background-size:contain;都可以,大家试试!

2、图片加载

若您遇到图片加载很慢的问题,对这种情况,手机开发一般用canvas方法加载:

具体的canvas API 参见:http://javascript.ruanyifeng.com/htmlapi/canvas.html

下面举例说明一个canvas的例子:

<li><canvas></canvas></li>  

s动态加载图片和li 总共举例17张图片!

var total=17;   var zWin=$(window);   var render=function(){      var padding=2;      var winWidth=zWin.width();      var picWidth=Math.floor((winWidth-padding*3)/4);      var tmpl ='';      for (var i=1;i<=totla;i++){       var p=padding;       var imgSrc='img/'+i+'.jpg';       if(i%4==1){         p=0;       }       tmpl +='<li style="width:'+picWidth+'px;height:'+picWidth+'px;padding-left:'+p+'px;padding-top:'+padding+'px;"><canvas id="cvs_'+i+'"></canvas></li>';       var imageObj = new Image();       imageObj.index = i;       imageObj.onload = function(){          var cvs =$('#cvs_'+this.index)[0].getContext('2d');          cvs.width = this.width;          cvs.height=this.height;          cvs.drawImage(this,0,0);       }       imageObj.src=imgSrc;      }    }   render(); 

3、假如手机网站不用兼容IE浏览器,一般我们会使用zeptojs。zeptojs内置Touch events方法,具体可以看http://zeptojs.com/#Touch events

看了一下zeptio新版的API,已经支持IE10以上浏览器,对zeptojs可以选择使用!

Mar 14
最近项目繁杂,电脑各个版本的vs ide都装了一把,可发现想做sql跟踪时打开SQL Server Profiler,死活没窗口,任务栏有程序,没有window界面,无意间发现一个方法可以解决

1、在任务栏右键调出 任务管理器
2、在SQL Server Profiler进程上右键选择“最大化”
3、在最大化的窗体上最小化后还是发现程序无法在任务栏点开,,这个时候不要最下话,点击移动窗口,缩放后最小化程序运行正常


Feb 16
https://my.oschina.net/u/1458120/blog/208857
Feb 12

熟悉IoC容器的都知道,在开发过程中,最郁闷的莫过于当你新增一个Service时,你需要对该Service进行注册,有的是使用代码注入,有的是XML配置注入,不管是哪种类型的注入,经常会出现开发人员忘记注入的情况,

如果你的页面是直接发送请求的,那么会得到类似于如下页面的错误:

image  <- _<-

 

如果该服务是用于AJAX请求实用的,那么你就悲剧了,因为页面只是没反应,只有查看错误日志了。

Feb 7
问题:
Quotation

项目上线后发现一个问题,项目记录流水的时间是取自本地的时间new Date(),之前一直正常,最近发现异常
经过日志发现时终端设备时区设置异常,但诡异的是终端APPrequest提交的时间戳是正常的……
撸一撸chun
日志中显示记录流水时间是:2017-02-07 08:16:55,为伦敦时间,
而正确的时间应该是2017/2/7 16:16:55,这就导致终端APP界面显示异常,
但request提交的是时间转换的时间戳:Math.round(new Date("2017-02-07 08:16:55".replace(/-/g, '/')).getTime()/1000)


why

什么是时间戳(timestamp)?它和时区(timezone)又有什么关系?初学者可能一开始很难搞懂时间戳这个概念,就像这期《程序员的日常》漫画中的主人公一样。

Highslide JS
漫画注释

从漫画中举的例子来看,这里的时间戳,指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。因此,严格来说,不管你处在地球上的哪个地方,任意时间点的时间戳都是相同的。这点有利于线上和客户端分布式应用统一追踪时间信息。

Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。但是,这并不意味着目前的时间戳规范会一直持续使用下去。 因为到2038年1月19日时,Unix时间戳就会因为32位内存溢出(32-bit overflow)而无法继续使用。因此,在这一天之前,上千万的网络应用要么采用新的时间戳规范,要么迁移到64位系统,后者可以给时间戳争取“一点”时间。


Jan 5

let no="u0000u0000u0000u0000u0000u0000u0000Ou0000u0000u0000u0000u0000u0000u0000u0000"
no = no.replace(/\u0000/g,"");

  \u0000是unicode表示的一个特殊字符,也就是二进制的0,在c里面用这个字符作为字符串结束的标志。
正是因为这个原因,造成调用某些方法的时候字符串被截断。例子:
<textarea id="ff"></textarea>
<script>
var x = 'xxx\u0000yyy';
alert(x);
alert(x.length);
var elm = document.getElementByIdx('ff');
elm.value = x;
y = x.replace('\u0000', ' ');
alert(y);
alert(y == 'xxx\u0000yyy');
alert(y == 'xxx yyy');
alert(elm.value.length);
alert(elm.value == 'xxx\u0000yyy');
alert(elm.value == 'xxx yyy);
</script>
本身声明这个字符串的时候是可以接受\u0000的,所以长度什么的都对
但是通过alert调用的时候,字符串就被截断,认为到\u0000就结束了
同样当作一个字符串赋值给一个textarea的时候,也被截断了(IE6)。
对于firefox,不被截断,textarea.value的值就是'xxx\u0000yyy'
Pages: 1/5 First page 1 2 3 4 5 Next page Final page [ View by Articles | List ]