كيف يمكنني منع فايرفوكس تظهر شريط جانبي امتدائي عند بدء التشغيل؟

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

سؤال

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

حاولت إضافة هذا القليل من التعليمات البرمجية إلى وظيفة تهيئة الملحق الخاصة بي لإغلاق الشريط الجانبي إذا ظهوره:

toggleSidebar("mySidebar", false);

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

يبدو أن الآخرين يواجهون نفس المشكلة على منتديات ميزيلازين.

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

المحلول

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

يبدو الكود مثل هذا، أثناء تهيئة التراكب الرئيسي:

    var current = this;
    var quitObserver = {
   QueryInterface: function(aIID) {
      if (aIID.equals(Components.interfaces.nsIObserver) || aIID.equals(Components.interfaces.nsISupports)) {
         return this;
      }
      throw Components.results.NS_NOINTERFACE;
   },
   observe: function(aSubject,aTopic,aData ) {
      var mainWindow = current._windowMediator.getMostRecentWindow("navigator:browser");
      var sidebar  = mainWindow.document.getElementById("sidebar");
      if (sidebar.contentWindow.location.href == "chrome://daisy/content/sidebar.xul") {
         mainWindow.toggleSidebar('openDaisySidebar', false);
      }
   }
};

setTimeout(function() {
   var mainWindow = current._windowMediator.getMostRecentWindow("navigator:browser");
   var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
   observerService.addObserver(quitObserver,"quit-application-granted",false);
},2000);

امل ان يساعد.

نصائح أخرى

toggleSidebar("mySidebar", false); لا يعمل لأن المعنى الثاني تعني "ملقط" ليس علامة مفتوحة / وثيقة.

كما أجاب أحدهم على Mozillazine لأن فايرفوكس يحافظ على دولة جانبية عبر جلسات. هل أنت متأكد من أنك بحاجة إلى أن تكون مختلفا هنا؟

إليك رمز Firefox الذي يفتح الشريط الجانبي عند بدء التشغيل:

http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#999.(قد يتم إيقاف تشغيل الأسطر عند الوصول إلى هذا لاحقا - إنها الرابط إلى أحدث إصدار من المصدر)

1000     let box = document.getElementById("sidebar-box");
1001     if (box.hasAttribute("sidebarcommand")) {

وهنا أين sidebarcommand تستمر السمة:

http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#1422.

1373 function BrowserShutdown()
...
1426   if (!enumerator.hasMoreElements()) {
1427     document.persist("sidebar-box", "sidebarcommand");

أقترح محاولة هذا:
إذا كانت النافذة الحالية هي آخر واحد وخط الشريط الجانبي مفتوحا،

  • إما إغلاق الشريط الجانبي من قبل BrowserShutdown (إنه مسجل كمعالج تفريغ للنافذة)
  • خداع BrowserShutdown للاستمرار في السمات المناسبة (المقابلة "Sidebar غير مفتوحة" حالة)
  • أو بعد BrowserShutdown الكتابة فوق القيم المستمرة مع تلك التي تحتاج إليها.

إذا توصلت إلى حل العمل، فيرجى مشاركتها مع الآخرين، ويفضل ذلك على MDC: https:/developer.mozilla.org/en/code_snippets/sidaybar.

انظر الإجابات في كيفية إغلاق الشريط الجانبي في فايرفوكس لكيفية إغلاقه عند الإغلاق، وفي حالة إيقاف التشغيل.

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