لماذا يطلق حدث تغيير حجمه باستمرار عند تعيينه معالج مع مهلة؟

StackOverflow https://stackoverflow.com/questions/1262774

سؤال

قمت بتعيين مهلة للنافذة الخاصة بي. معالجها بحيث لا أتصل بمبلغي Sizable Simize Code في كل مرة تقوم بتغيير حجم حرائق الأحداث. يبدو رمزي مثل هذا:

<script>
function init() {
  var hasTimedOut = false;
  var resizeHandler = function() {
    // do stuff
    return false;
  };

  window.onresize = function() {
    if (hasTimedOut !== false) {
      clearTimeout(hasTimedOut);
    }
    hasTimedOut = setTimeout(resizeHandler, 100); // 100 milliseconds
  };
}
</script>
<body onload="init();">
...
etc...

في IE7 (وربما إصدارات أخرى) يبدو أنه عند القيام بذلك، فإن حدث تغيير الحجم سوف ينطلق باستمرار. أكثر دقة، سوف ينطلق بعد كل مدة مهلة - 100 مللي ثانية في هذه الحالة.

أي أفكار لماذا أو كيفية إيقاف هذا السلوك؟ أود حقا عدم استدعاء رمز تغيير الحجم الخاص بي لكل حدث تغيير الحجم ينطلق في تغيير حجم واحد، ولكن هذا أسوأ.

هل كانت مفيدة؟

المحلول

في رمز الاشياء الخاص بك //، هل تتلاعب بأي من القمة أو اليسار أو العرض أو الارتفاع أو الحدود أو الهامش أو خصائص الحشو؟

قد تكون غير قصد أن تؤدي عن غير قصد إلى العودية التي تؤدي عن غير قصد إلى العودية التي تزيد عن غير قصد Recursion ...

نصائح أخرى

كيفية إصلاح حدث تغيير حجم في IE

أيضا، انظر الإجابة عن "scunliffe" "في ... خصائص؟

إذا قام IE بالفعل بإطلاق أحداث تغيير حجمه أثناء تغيير الحجم (يجب أن تعرفه، لأنك تقوم بالفعل بتطبيق مهلة لإصلاح).

أنا قادر على تكرار النتائج التي تراها، باستخدام التعليمات البرمجية الخاصة بك، في صفحة الاختبار الخاصة بي.

ومع ذلك، تختفي المشكلة إذا قمت بزيادة المهلة إلى 1000 بدلا من 100. قد ترغب في المحاولة مع قيم الانتظار المختلفة لمعرفة ما يناسبك.

هنا هي صفحة الاختبار التي استخدمتها: يتمتع بفترة الانتظار الديناميكية بشكل جيد بالفعل لكي تلعبها معها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top