كيفية التقاط حدث Ajax الذي يقوم بشكل دوري بتحديث صندوق الوارد Gmail

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

  •  03-07-2019
  •  | 
  •  

سؤال

أحاول كتابة نص Greasemonkey يعمل مع Gmail. أعرف كيفية إنشاء JavaScript الذي يتفاعل مع المستخدم الذي ينقر على رابط البريد الوارد أو رابط التحديث. مشكلتي هي أن Gmail يقوم بشكل دوري بتحديث صندوق الوارد مع محادثات جديدة وليس لدي أي طريقة لالتقاط هذا الحدث. هل هناك أي طريقة لالتقاط أحداث Ajax الدورية في JavaScript؟

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

المحلول 2

لقد جربت اقتراح مايلز الممتاز أعلاه ، لكن لسوء الحظ ، لا يعمل لأن Gmail قد وصف بالفعل وظيفة SetTimeout الأصلية قبل أن تتاح لي فرصة تغييرها في برنامج Greasemonkey.

الشيء الوحيد الذي يمكنني فعله هو الرد بطريقة أو بأخرى على التغييرات التي يجريها Gmail عندما تقوم بتحديث صندوق الوارد بشكل دوري. لقد وجدت أن هناك العديد من الأحداث المتعلقة بـ DOM التي تطلق النار عند إضافة عقدة أو إزالتها:

http://www.w3

نظرًا لأن Gmail تقوم بتحديث DOM مع أحدث رسائل البريد الإلكتروني الخاصة بي ، يمكنني الاستماع إلى أحداث DOM هذه (أنا أستخدم DomNodeInserted) والرد على التغييرات.

انها ليست أنيقة ، لكنها تعمل.

نصائح أخرى

يمكنك محاولة استبدال window.setTimeout الوظيفة (وربما window.setInterval) مع وظائفك الخاصة:

window._setTimeout = window.setTimeout;
window.setTimeout = function(func, delay) {
    return window._setTimeout(function() {
        // Your code goes here, before the client function is called
        alert('A timeout event just fired!');

        if (typeof func == 'string') {
            eval(func);
        } else {
            func();
        }
    }, delay);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top