使用angular开发的模块在IE8/9浏览器中不停刷新的问题

出现问题的模块:
燕麦企业云盘 后台管理购买中心

通过不停注释代码, 我一步步缩小问题代码范围, 最终定位为IE8注册window的resize事件有问题

有问题的代码:

angular.module("commons.directives").directive("qyResize", [
    '$window',
    qyResize
]);

function qyResize($window) {
    'use strict';

    return {
        restrict: 'EA',
        replace: false,
        transclude: false,
        link: function (scope, elem, attrs) {
            $(window).resize(function () {
                location.reload();
            });
        }
    };
}

修复以后的代码:

angular.module("commons.directives").directive("qyResize", [
    '$window',
    qyResize
]);

function qyResize($window) {
    'use strict';

    return {
        restrict: 'EA',
        replace: false,
        transclude: false,
        link: function (scope, elem, attrs) {

            var winWidth = $(window).width(),
                winHeight = $(window).height(),
                resizeTimeout = null;

            $(window).resize(function () {
                var onResize = function () {
                    //The method which alter some css properties triggers
                    //window.resize again and it ends in an infinite loop
                    location.reload();
                };

                //New height and width
                var winNewWidth = $(window).width(),
                    winNewHeight = $(window).height();

                // compare the new height and width with old one
                if (winWidth != winNewWidth || winHeight != winNewHeight) {
                    window.clearTimeout(resizeTimeout);
                    resizeTimeout = window.setTimeout(onResize, 10);
                }
                //Update the width and height
                winWidth = winNewWidth;
                winHeight = winNewHeight;
            });
        }
    };
}

这个问题是因为IE8的resize事件触发有问题, 它在刚进入页面时一定会触发该事件.

angular版本的登录和注册功能没有问题是因为他们中没有用到qy-resize

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 事件流 IE和Netscape开发团队提出了完全相反的两种事件流的概念,事件冒泡流和事件捕获流。 事件冒泡 事件由...
    exialym阅读 998评论 0 9
  • 事件类型 Web浏览器可能发生的事件类型有很多。不同的事件类型具有不同的信息,而“DOM3级事件“规定了以下几类事...
    ConRon阅读 902评论 0 1
  • 研二的时候,我过着一种深居简出的生活,每天三点一线,在宿舍,食堂,实验室里过活,办公桌上,全是没洗尽的烧杯,没用完...
    林新一阅读 10,045评论 0 8
  • 爷爷的年龄, 写在脸上的皱纹里, 马儿的年龄, 嚼在嘴巴的牙齿里; 树木的年龄, 藏在肚子的年轮里。 老师, 那么...
    安吉月阅读 543评论 0 2
  • 目 录 |惟有兰花香正好 上一章 |陵光 文 |唐妈 前情提要:在外度假的兰让和陆艺匆匆赶回鹿城,发现陆艺前男友...
    唐妈阅读 1,730评论 17 43