2015-05-10 48 views
3

創建當一個Firefox插件ActionButtondisabled,例如,禁用Firefox插件ActionButton不會變灰

var button = new ActionButton({ 
    id: 'my-link', 
    label: 'My label', 
    icon: { 
    '16': './icon-16.png', 
    '32': './icon-32.png', 
    '64': './icon-64.png' 
    }, 
    onClick: handleClick, 
    disabled: true 
}); 

按鈕確實無法點擊,並且不產生任何事件,但圖標而不是顯示爲灰色,如the documentation中所示。

任何想法,爲什麼這可能是?

+0

尼斯漁獲物。這應該被報告爲一個錯誤,因爲它顯示禁用圖標有一些不透明度,例如50%。 – Noitidart

+1

現在報道了。 https://bugzilla.mozilla.org/show_bug.cgi?id=1167559 –

+0

謝謝@Nico :)直到他們解決它雖然,您可以使用下面張貼的樣式註冊 – Noitidart

回答

1

試試看,我的按鈕的ID是toggle-button--helloname-my-button1,其中helloname是我的插件的名稱,my-button1是我設置的ID。因此,DOM ID爲toggle-button--helloname-my-button1您應該更新這是toggle-button--YOUR_ADDON_NAME-my-link

// globals 
Cu.import('resource://gre/modules/Services.jsm'); 
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); 

var cssUri; 
var svgFilterUrl; 
// end globals 

if (Services.vc.compare(Services.appinfo.version, 34) < 0) { 
    // for less then firefox v34 
    if (!svgFilterUrl) { 
     Cu.importGlobalProperties(['URL']); 
     var oFileBody = '<svg xmlns="http://www.w3.org/2000/svg"><filter id="grayscale"><feColorMatrix type="saturate" values="0"/></filter></svg>'; 
     var {Blob} = Cu.import("resource://gre/modules/Services.jsm", {}); 
     var oBlob = Blob([oFileBody], { 
      type: "text/xml" 
     }); 
     svgFilterUrl = URL.createObjectURL(oBlob); 
     console.log(url) 
    } 
    var css = '#toggle-button--helloname-my-button1[disabled] { filter: url(' + url + '#grayscale); }'; 
} else { 
    // for less then firefox >= v34 
    var css = '#toggle-button--helloname-my-button1[disabled] { filter:grayscale(1) }'; 
} 
var newURIParam = { 
    aURL: 'data:text/css,' + encodeURIComponent(css), 
    aOriginCharset: null, 
    aBaseURI: null 
}; 
var cssUri = Services.io.newURI(newURIParam.aURL, newURIParam.aOriginCharset, newURIParam.aBaseURI); 
sss.loadAndRegisterSheet(cssUri, sss.AUTHOR_SHEET); 

,當你想卸載/禁用插件做sss.unregisterSheet(cssUri, sss.AUTHOR_SHEET);