使用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閱讀 984評論 0 9
  • 事件類型 Web瀏覽器可能發生的事件類型有很多。不同的事件類型具有不同的信息,而“DOM3級事件“規定了以下幾類事...
    ConRon閱讀 901評論 0 1
  • 研二的時候,我過著一種深居簡出的生活,每天三點一線,在宿舍,食堂,實驗室里過活,辦公桌上,全是沒洗盡的燒杯,沒用完...
    林新一閱讀 10,040評論 0 8
  • 爺爺的年齡, 寫在臉上的皺紋里, 馬兒的年齡, 嚼在嘴巴的牙齒里; 樹木的年齡, 藏在肚子的年輪里。 老師, 那么...
    安吉月閱讀 542評論 0 2
  • 目 錄 |惟有蘭花香正好 上一章 |陵光 文 |唐媽 前情提要:在外度假的蘭讓和陸藝匆匆趕回鹿城,發現陸藝前男友...
    唐媽閱讀 1,716評論 17 43