资讯专栏INFORMATION COLUMN

前端小知识10点(2019.6.25)

wangzy2019 / 3199人阅读

摘要:前言这里记录我工作学习中值得注意的小知识点,希望对你有所帮助。循环的语法在单次循环开始前执行是单次循环的条件这里即存在是单次循环结束后执行说明在单次循环开始前执行是单次循环的条件这里即存在是单次循环结束后执行。

前言:
这里记录我工作、学习中值得注意的小知识点,希望对你有所帮助。

1、 moment.js将某年某周转为具体日期

举例:将2019年第二周转为具体日期


(1)关于ISO 8601时间标准对周的定义,请参考:
ISO 8601中周数的处理及 Joda-Time 的使用

(2)moment.js将某年某周转化为具体日期的方法,请参考:http://momentjs.cn/docs/#/get-set/iso-weekday/

2、IE11导出excel表格和图片(兼容性)

导出 excel:

const fileData = ["" + ("") + a.outerHTML + ""];
const blobObject = new Blob(fileData);
window.navigator.msSaveOrOpenBlob(blobObject, `${tableTitle}.xls`);

说明:
a.outerHTML

outerHTML

导出图片:

 let dataURItoBlob = function(dataURI) {
    let binary = atob(dataURI.split(",")[1]);
    let array = [];
    for(let i = 0; i < binary.length; i++) {
       array.push(binary.charCodeAt(i));
    }
    return new Blob([new Uint8Array(array)], {type: "image/png"});
}

let blob = dataURItoBlob(picBase64Info);
window.navigator.msSaveOrOpenBlob(blob, "图片.png");

说明:
picBase64Info即图片的base64格式。

3、IE11在请求头中设置 Cache-Control 来清除缓存

  headers: {
      Authorization: requestToken,
      //ie11缓存问题
      "Cache-Control": "no-cache, must-revalidate",
    },

如果没效果的话,只能手动设置IE11,不使用数据缓存了。

4、for循环的语法(a; b; c)

        //a在单次循环开始前执行
        //b是单次循环的条件(这里即cur存在)
        //c是单次循环结束后执行
        for ( ; cur; cur = cur.parentNode ) {
          //xxx
        }

说明:
a在单次循环开始前执行;
b是单次循环的条件(这里即cur存在);
c是单次循环结束后执行。

5、类数组与数组的区别
类数组:

  const arrayLike = { "1":1, "2":2, "3":3, "a":"a", "b":"b", length: 7}
  console.log(arrayLike.length) //7
  //直接使用数组的方法
  //{3: 3, 4: 2, 5: 1, a: "a", b: "b", length: 7}
  console.log(Array.prototype.reverse.call(arrayLike));
  //undefined
  console.log(Array.prototype.pop.call(arrayLike,4));
  //+++3+2+1
  console.log(Array.prototype.join.call(arrayLike,"+"));

区别:
(1)类数组对象具有数组的一些属性(如length
(2)类数组对象,缺少从数组的原型对象上继承下来的内置方法(例如:pop()reverse()等)
(3)类数组对象不关心除了数字索引length属性以外的东西

6、function(){} 默认返回 undefined
就是你不写return xxx,它默认return undefined

let a=function () {
  //return undefiend
}

 a()  //undefined

7、stopImmediatePropagation()

有两个作用:
(1)阻止剩下的事件处理程序被执行

$("div").click(function(event){
    alert("点击了divOne");
    event.stopImmediatePropagation();
});
$("div").click(function(event){
    alert("点击了divTwo");
});

只显示点击了divOne

(2)阻止冒泡

    $("body").click(function(event){
        alert("body 被执行");
    });
    $("div").click(function(event){
        alert("事件句柄 1 被执行");
        event.stopImmediatePropagation();
    });

只显示点击了divOne

stopImmediatePropagation()stopPropagation()的区别:
(1)stopImmediatePropagation()方法既可以阻止剩下的事件处理程序被执行,又可以阻止冒泡
(2)stopPropagation()方法只能阻止冒泡

8、MVVM框架中,只要操作VM的数据,它就自然而然地同步到view,是利用什么属性同步的?
Object.definePropertyObject.defineProperty的作用是将对象的某一个属性,转换一个settergetter, 我们只要劫持这两个方法,通过Pub/Sub模式就能偷偷操作视图。

9、tabindex属性,让div元素成为focusable(可获取焦点的)元素

这是A
这是C
$("#A").on("focus" ,function (event) { console.log(event,"A被focus了") }) $("#C").on("focus",function (event) { console.log(event,"C被focus了") })

注意:focus 不会冒泡!

点击#C(聚焦#C):

点击#A(聚焦#A):

10、js禁止excel格式转化(重要!)
为每个

xa0是不间断空白符 

注意:不要在number类型的列下这么做,不然用户不能在excel里进行数值计算

(完)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/105010.html

相关文章

  • 前端早读会】每天记录前端学习的过程

    摘要:在这里使用学而思网校的录像设备,记录前端工程师每天学习的内容商城小程序分享人王聪视频插件开发分享人魏媛视频原理分享人李佳晓视频讲座优化实战分享人江芊视频文件操作分享人张凯视频一次性学会正则表达式分享人贺杰视频浅谈 在这里使用学而思网校的录像设备,记录前端工程师每天学习的内容: 2019-8-22 商城小程序codereview 分享人:王聪 视频:https://lecture.xue...

    tylin 评论0 收藏0
  • 前端知识102019.5.18)

    摘要:当给数组的赋负数或小数时,数组的长度有无变化由此可见,的属性只计算非负整数下标不计算负数小数项目热更新慢并且是在时卡住怎么办本人实际上是文件里多写了个逗号。。。。 showImg(https://segmentfault.com/img/remote/1460000019223033); 1、当给数组的index赋负数或小数时,数组的长度有无变化? let arr=[] arr...

    neuSnail 评论0 收藏0
  • 前端知识102019.5.28)

    摘要:可以看到,这组参数,以上三条全部满足。详情请参考浏览器类别判断安全浏览器完 showImg(https://segmentfault.com/img/remote/1460000019316485); 1、火狐(firefox)的mouseenter问题 { this.mouseEnter(e,); }} onBlur={() => {...

    Imfan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<
添加xa0

{value+ "xa0" }