代码改变世界

8月前端 tips

2010-09-29 11:06  一醉而过  阅读(1072)  评论(0编辑  收藏  举报

8.2 - 8.6

 

104.【JS】获取当前时间的毫秒数可通过以下方法:new Date().getTime(), new Date().valueOf(), +new Date(), new Date() * 1, Date.parse(Date()) … 等等,前四种方法括号内可以带时间的参数,可以返回相应的时间的毫秒数,而最后一个会忽略掉任何参数。推荐看下:http://www.gracecode.com/archives/3004/  (剑翎,乔福)

 

105.【Flash】页面中的swf配置参数中wmode一般 为 window。即独立窗口模式播放,不与当前HTML产生交互。(龙藏)

 

106.【Mobile】兼容iPhone/Android的屏幕旋转事件:

var supportsOrientationChange = "onorientationchange" in window,

orientationEvent = supportsOrientationChange ? "orientationchange" : "resize";

window.addEventListener(orientationEvent, function() {

   switch(window.orientation){

      case 0:

         //do sth;

         break;

      case 90:

         //do sth;

         break;

   }

}, false); (王卓)

 

107.【JS】+ 的字符串连接在传统的 IE 浏览器下性能低下,可考虑使用数组索引(或push,索引略快)添加、join最终拼接的方式(但:Safari、Opera、Chrome和IE8浏览器都已优化了+的字符串连接性能,优于数组的方法)。(圆心)

 

108.【JS】!!可以便捷的强制把其他类型转换为布尔类型,比如 !!1。

 

8.9 - 8.13

 

109.【CSS】应该特别关注的引起 reflow 的几个原因:计算 offsetWidth 和 offsetHeight 属性、改变字体。

详细可阅读:http://www.planabc.net/2009/04/13/reflow/ (圆心)

 

110.【Mobile】获取当前地理位置的方法:navigator.geolocation.getCurrentPosition(showMap/*回调函数*/),坐标变量:latitude = position.coords.latitude; longitude = position.coords.longitude;(王卓)

 

111.【Flash】在页面中应用swf对象的,如果对显示没有特殊要求,请不要将wmode 强制写为 opaque 或 transparent,这会影响其性能。(龙藏)

 

112.【JS】在使用 parseInt 函数转换数字的时候,尽量带上第二个参数,强制转换为某一进制类型的数字,否则,如 parseInt('080') 可能不能获得你想要的结果,推荐使用 parseInt('080', 10)

 

113.【JS】在 IE 中当重新设置新的 href 属性值时,如果链接文字含有 “http://” 或 “@” ,则其 innerHTML 将显示不正确,显示成设置的 href 属性。解决方法是在修改href时,赋值前面加一个空格。(圆心)

 

8.16 - 8.20

 

114.【JS】在做数组或者其它依赖 length 属性的循环时,建议先对 length 赋值,这样可以避免每次循环都去计算 length(特殊情况除外),例如:

        var myString = "Hello";

        for ( var i = 0, len = myString.length; i < len; i++ ) {

                alert( myString.charAt( i ) );

        }

 

115.【Mobile】Android 2.2 webkit新APIs:navigator.connection.type可以判断当前网络连接的类型;navigator.onLine检测设备是否联网;navigator.isApplicationInstalled检测是否安装某一个本地应用(王卓)

 

116.【JS】当脚本将 img 元素 innerHTML 给其他创建的元素,未添加到 DOM 树,则除 Opera 外,其他浏览器都会立即请求图片。(圆心)

 

117.【Flash】对于swf的内容,优雅降级的最佳事件是给出可替换内容“alternative content”. 这部分内容仅在<object>中被直接支持。这就是为什么推荐一般采用 <object> 进行swf嵌入的原因。(龙藏)

 

118.【CSS】IE bug Table: http://ued.alipay.com/2010/07/ie-beat-the-holy-canon-css-bug-table/ (龙刚)

 

8.22 - 8.26

 

119.【JS】IE为setInterval提供的延时时间不能为0。当setInterval的延时时间为0时,它会转变成 setTimeout(仅执行一次回调函数),可以通过为其提供1ms的延迟来解决这个问题。(圆心)

 

120.【Flash】swf在不绑定或动态加载字体的情况下,一般仅支持 _sans (类似 Helvetica 或 Arial)、_serif (类似 Times Roman) 和_typewriter (类似 Courier) 三类字体。(龙藏)

 

121.【Mobile】iPhone上使用Gestures API来实现缩放和旋转:

 

        var width = 100, height = 200, rotation = ;

 

        node.ongesturechange = function(e){

         var node = e.target;

         // 缩放和旋转都是相对值,

         // 所以要等手势结束时再更改我们的变量

         node.style.width = (width * e.scale) + "px";

         node.style.height = (height * e.scale) + "px";

         node.style.webkitTransform = "rotate(" + ((rotation + e.rotation) % 360) + "deg)";

        }

 

        node.ongestureend = function(e){

         // 更新这些变量,以备后用

         width *= e.scale;

         height *= e.scale;

         rotation = (rotation + e.rotation) % 360;

        }

(王卓)

 

122.【JS】对于select中的值,用JS选中它,除了用xxx.options[指定的index]以外,如果已经预先知道需要选中的那项的值,还可以直接用select.value=指定的值来快速搞定。(龙刚)

 

123.【JS】条件判断时,比如 if ( myNum == 3 ),建议书写为 if ( 3 == myNum ),因为后者在你误写 == 为 = 或者其它失误时,错误发生后你可以很容易的发行问题,浏览器的报错提示也会有更友好的提示。

 

8.30 - 8.31

 

124.【Flash】给swf传递参数或者以flashvars方式传递。可以支持内容编码过的JSON和 XML。如对 JSON的所有 value 进行 encodeURIComponent。(龙藏)

 

125.【JS】在使用 setTimeout 或者 setInterval 函数时,需要注意,如果第一个参数传入的是字符串,那么将在全局作用域里寻找此函数,而不会在当前作用域中寻找,所以建议第一个参数传入函数,比如:setTimeout( function() { loop(counter); }, 1000 );。