zoukankan      html  css  js  c++  java
  • JavaScript问题汇总

    1. Ajax调用被杀毒软件/防火墙阻挡
       记得05年做项目遇到过这种情况,发现客户端关掉kv300和瑞星的网页监控选项能够解决问题,因为是集团和供应商之间的系统,没有深究原因,而是要求用户关闭杀毒软件的网页监控选项
       不久前的项目又遇到这个情况,卡巴会拦截ajax调用请求。将http header的connection设置为close可以解决问题:xmlHttp.setRequestHeader('Connection', 'close');。
       两次发生这种情况时都不是使用第三方js库,而是直接用xmlhttp实现。使用jQuery和Prototype的时候好像没有遇到过,查了一下jQuery里面的ajax没有对Connection进行设置,而Prototype则给出了一段,说针对老板本Mozilla的一个bug而将Connection设为close。http1.1的Connection默认为persistent connection,既然jQuery和Prototype不会出问题,则说明卡巴的拦截规则为:connection要么为close;如果使用persistent connection,则其它某些header必须符合要求,否则一律拦截。

    2. IE Operation aborted
       参考Dealing with IE Operation Aborted
    <html>
    <head>
        
    <script type="text/javascript">
        
    function appendToBody() {
            
    var div = document.createElement('div');
            div.innerHTML 
    = "Operation aborted!";
            document.body.appendChild(div);        
        }
        
    </script>
    </head>
    <body>
        
    <form>
        
    <script type="text/javascript">
                appendToBody();
        
    </script>
        
    </form>
    </body>
    </html>
       IE打开这个文档就会出现"Operation aborted"错误信息,解决方法1.为script标签加上defer属性,2.让script标签属于body的直接子节点。defer属性只针对IE有效,并且导致在IE中script的执行被延迟,而其它浏览器下则不会,因此需要注意多浏览器下的副作用

    3. jQuery的selector,文档中有可能同一id出现多个地方时,一定要指定context,即$(selector, context)
       因为很多地方都需要弹出窗口选择用户、选择组织结构等类似功能,没有使用window.open,而是用jQuery做了一个div弹窗的封装,外层div包装了弹出窗口的标题栏、按钮、3D边框效果、drag/drop、ajax调用、统一的使用接口等,里面有个id为dataArea的div,用ajax调用具体的查询页面将html填入其中。问题发生在同一个页面需要多个这样的弹出窗口,导致dataArea这个id存在多个对象,selector中不使用context时,多次弹出时竟然循环交替的获取到各个dataArea对象
       javascript组件用的多而复杂时,相关的一些问题跟线程安全一样重要而复杂
  • 相关阅读:
    阿里妈妈MaxCompute架构演进_-_AON(MPI)集群
    阿里云ECS部署Grafana接入zabbix
    ECS实例RAM角色实践
    上海云栖—人工智能-视觉计算专场预热
    阿里云论坛版主制作最新教程汇总贴
    移动相关的css
    GULP入门(一)
    mongodb+nodejs 增删查的demo
    nodejs+express 初学(三)
    nodejs+express 初学(二)
  • 原文地址:https://www.cnblogs.com/RicCC/p/1118249.html
Copyright © 2011-2022 走看看