zoukankan      html  css  js  c++  java
  • IBM简单提问。。。捂脸哭。。神马都不记得了。。。

    刚刚接到IBM电话,我都快忘了我投了什么职位,瞎蒙了一个前端,还真是哎。。blueMix的前端。。汗!完全聊不下去,呜呜呜T^T!

    1.阻止冒泡

    if (window.event) {//IE
      e.cancelBubble=true;
     } else { //FF
      e.stopPropagation();
     }

    2.异步编程

    setTimeout 和 setInterval 

    在记住一个promise对象:

    Promises对象是CommonJS工作组提出的一种规范,目的是为异步编程提供统一接口

    简单说,它的思想是,每一个异步任务返回一个Promise对象,该对象有一个then方法,允许指定回调函数。比如,f1的回调函数f2,可以写成:

    f1().then(f2);

    function f1(){

     var dfd = $.Deferred();

     setTimeout(function () {

     // f1的任务代码

     dfd.resolve();

     }, 500);

     return dfd.promise;

     }

    这样写的优点在于,回调函数变成了链式写法,程序的流程可以看得很清楚,而且有一整配套方法,可以实现许多强大的功能。

    3.用过什么框架

    4.事件发生机制

    事件从根节点开始,逐级派送到子节点,若节点绑定了事件动作,则执行动作,然后继续走,这个阶段称为“捕获阶段(Capture)”;
    执行完捕获阶段后,事件由子节点往根节点派送,若节点绑定了事件动作,则执行动作,然后继续走,这个阶段称为“冒泡阶段(Bubble)”。

    function addEventListener(eventFlag, eventFunc, [bool useCapture=false])
     eventFlag : 事件名称,如click、mouseover…
     eventFunc: 绑定到事件中执行的动作
     useCapture: 指定是否绑定在捕获阶段,true为是,false为否,默认为true
     在事件监听流中可以使用event.stopPropagation()来阻止事件继续往下流

     IE中使用自有的attachEvent函数绑定时间,函数定义如下:
     function attachEvent(eventFlag,eventFunc)
     eventFlag: 事件名称,但要加上on,如onclick、onmouseover…
     eventFunc: 绑定到事件中执行的动作
     在事件监听流中可以使用window.event.cacenlBubble=false来阻止事件继续往下流

     总结:addEventListener(string eventFlag, function eventFunc, [bool useCapture=false]),针对ff,chrome,safari浏览器,false指冒泡阶段,默认为true,指捕获阶段。不过一般我们都用false。

     attachEvent(string eventFlag, function eventFunc),针对ie系列、还有opera浏览器,少了事件处理机制的参数,只指定事件类型(别忘了on)和触发哪个函数。  

    有了这些认知之后,有了大致的思路,对应的代码:

    if(document.addEventListener){

    document.addEventListener('click', hideBox, false);

    在document绑定信息框(竖的那个)隐藏函数(即随便点html页面的哪里关闭展开的信息框,这也是使用document.addEventListener的原因,要帮在文档上)

    document.getElementById('status_hide').addEventListener('click', showBox, false);

    在status_hide节点绑定信息框展开(详细的那个)函数并停止事件流(即点击竖的这个,展开详细的那个)

    document.getElementById('status_show').addEventListener('click', stopEvent, false);

    因为false确定的是事件冒泡,为了防止点详情的时候,向上冒泡到document,触发document设置的click时hidebox方法,在status_show我们要绑定阻止事件流函数。

    }

    这个明白了,针对ie再写个attachEvent的就可以了,当然ie的参数只用2个就可以了,它的时间处理机制就是冒泡不用额外设置。

    最后要说说这段函数。

    var stopEvent = function(event){ e = event || window.event; if(e.stopPropagation){ e.stopPropagation(); }else { e.cancelBubble = true; } };

    可以确定它的作用是防止前面提到的冒泡,引发不该引发的click事件。

    可是它呢function(event){e = event || window.event}

    注: 事件捕获

    只有IE下才兼容的:

    oBtn.setCapture();  //捕获

    oDiv.releaseCapture();  //释放捕获

    英语: What's your hobby ?

    后记: 泥煤,果然,一不复习,就渣成这幅鬼样了!!!

  • 相关阅读:
    hdu 1527威佐夫博弈
    hdu 1506
    hdu 1878 欧拉回路
    欧拉回路知识
    hdu 2545 并查集 树上战争
    hdu 2594 kmp
    hdu 1867 kmp匹配
    hdu 2844 多重背包二进制优化
    hdu 4006
    1047
  • 原文地址:https://www.cnblogs.com/shixiaomiao/p/4905105.html
Copyright © 2011-2022 走看看