发表于: 2017-05-24 21:05:24

1 974


今日完成:
参加真实项目的需求分析会议;分析与理解项目需求;准备进入真实项目的PPT;分析与学习了一些处理ie8兼容性的方法。
明日计划:
完成真实项目的方案;完成并宣讲PPT;
问题:
今天主要对项目要兼容ie8有点懵;以及如何实现页面链接百度的API进行搜索、实现设置首页、分享qq、微博等。
后面查了资料,关于链接第三方接口的方式其实都是现成的,不需要做太多动作。
至于兼容ie8,需要提前做好方案比对,选择好最适合的方法,不然很可能会出现前后不协调的问题。
收获:
部分元素或真实项目中常用的方法处理ie8兼容性的方式:
1.foreach函数。
ie8不支持foreach函数,如果一定要调用foreach,需要自己在js文件的全局作用域中进行定义:
if (!Array.prototype.forEach)
{
 Array.prototype.forEach = function(fun /*, thisp*/)
 {
  var len = this.length;
  if (typeof fun != "function")
   throw new TypeError();
  var thisp = arguments[1];
  for (var i = 0; i < len; i++)
  {
   if (i in this)
    fun.call(thisp, this[i], i, this);
  }
 };
}
2.css3新属性
ie8不支持css3新属性;解决方式是下载一个特定的脚本文件:ie-css3.htc。然后在样式表中定义:behavior: url(ie-css3.htc)。就ok了。
3。弹性布局、bootstrap。
写样式只能弃用弹性布局了;bootstrap3支持ie8,但是不支持媒体查询,还好这个项目不要求做响应式。
3.最麻烦的其实是angularJs,ie8只支持到angularJs1.3以下的版本,jquery也只支持到1.9
所以只能引用一个低版本的angularJs;同时注意相应的angularJs插件,可能file-uploader、分页等插件都没办法用了(这几个插件是基于高版本的angularJs来实现的),需要重新想办法解决。
4.晚上听思言讲了小课堂,对作用域链的知识重新梳理了一遍。提到了定义变量的另一种方法:let。之前没怎么接触到let。
let是ES6的新方法。使用let定义变量是块级的,更加精确。只要离开变量的作用域,变量就会销毁。
var 会扩大变量的作用域,我的理解var在整个函数内甚至函数外都是有效的。而let只会在当前这个块级的作用域才会有效。
在循环语句里,使用let进行每一次循环,都会创建新的变量,而不是对变量进行重复赋值。

经典的问题:

  for (var i= 0;i<10;i++){
setTimeout( function(){console.log(i)},1000);
}


除了用闭包的方式,也可以直接把var i改为let i,也能保证输出的值不会是 10个 10.



返回列表 返回列表
评论

    分享到