لماذا تم تطبيق رمز الافتراضي ريبر عمل المتصفح بعد رمز مخصص?

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

سؤال

لدي مشكلة غريبة مع رمز عمل المتصفح في كروم.هناك رمز افتراضي لعمل المتصفح المحدد في البيان.يتم عرض الرمز بشكل صحيح.ثم في صفحة الخلفية ، في ظل بعض الظروف ، أدعو:

chrome.browserAction.setIcon({path:"green_32.png", tabId:request.tabId});

يومض هذا الرمز للحظة ، ثم يتغير مرة أخرى إلى الرمز الافتراضي.تم تمرير علامة التبويب النشطة ومعرفها إلى setIcon تبقى هي نفسها خلال كل عملية.

هل يمكن لأي شخص أن يقترح فكرة عن سبب حدوث ذلك?

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

المحلول

السبب في إعادة تعيين الرمز إلى الحالة الافتراضية في كل مرة هو أنني اتصلت setIcon قبل تنتهي علامة التبويب من التحميل وتحصل على "كاملة" الدولة.

أعتقد أنه يجب أن يكون هناك بعض المعلومات حول هذا في الوثائق حول علامات التبويب أو على إجراءات المتصفح, ، لكنني لم أجده:يتم تطبيق الرمز الافتراضي بالفعل-حسب التصميم-على صفحة معينة بعد انتهاء التحميل.انتقلت المكالمة setIcon في tabs.onUpdated معالج ، والآن رمز مخصص لا يزال قائما.

هذا يتناقض مع فهمي السابق أن رمز إجراء المتصفح يتم تعيينه على أساس كل علامة تبويب ، بغض النظر عن صفحة تم تحميلها في علامة التبويب وحالتها.

تضمين التغريدة يرجى تقديم امتداد بسيط لاختبار الحالة (انظر إلى التعليقات).لقد غيرت لها الخلفية.شبيبة سيناريو لإظهار هذا السلوك:

chrome.browserAction.onClicked.addListener(function(tab)
{
  chrome.browserAction.setIcon({path: 'gfx/icon2.png', tabId: tab.id});
});

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

إذا تم شرح هذا السلوك في بعض الوثائق ، من فضلك ، اكتب هذا في التعليقات ، وسأقوم بتحديث الإجابة.مما قرأته حتى الآن ، كنت مقتنعا بأن الرمز الافتراضي قد تم تعيينه لعلامة تبويب جديدة في وقت إنشائه ، ومن ثم فإن أي تغييرات عليه تخضع فقط لسيطرة الامتداد.

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