ダウンロードの方法「次のフォルダに保存する」と「ファイルごとに保存先を指定する」をトグルするアドオンを作りたいのですがうまくいきません。
about:config に browser.download.useDownloadDir という項目があるので、これを変更すれば良いと思い、user_pref 関数を使ってみたのですが、アドオンの javascript 上では使用できないようです。
config 情報を変更するにはどのようにすればいいのでしょうか?
アドオンでconfig情報変更
モデレータ: Forum Moderators
Re: アドオンでconfig情報変更
- browser.download.useDownloadDir を書換えることで希望される挙動が実現されるのか
- 拡張で既存の項目を書換えることの是非(拡張の機能の実行を終了したタイミングで元の状態に戻せば倫理的にOK?)
Re: アドオンでconfig情報変更
browser.download.useDownloadDirをトグルする項目をContentAreaContextMenuに追加するuserChrome.js用のスクリプトです。rk さんが書きました:config 情報を変更するにはどのようにすればいいのでしょうか?
拡張を作ったことが無いのでこれが参考になるかはわかりませんが……。
コード: 全て選択
(function() {
var menuitem = document.createElement("menuitem");
menuitem.setAttribute("id", "toggleUseDir");
menuitem.setAttribute("label", "toggleUseDIr");
menuitem.addEventListener("click", function(aEvent) {
try {
var useDir = gBrowser.mPrefs.getBoolPref("browser.download.useDownloadDir");
} catch(ex) {
gBrowser.mPrefs.setBoolPref("browser.download.useDownloadDir", false);
}
if (useDir) { gBrowser.mPrefs.setBoolPref("browser.download.useDownloadDir", false); }
else { gBrowser.mPrefs.setBoolPref("browser.download.useDownloadDir", true); }
}, false);
var Popup = document.getElementById("contentAreaContextMenu");
Popup.insertBefore(menuitem, Popup.firstChild);
})();Re: アドオンでconfig情報変更
お返事ありがとうございます。 目的の動作をさせることができました。
しかし
僕が実装したかった機能は、一般的にはどのように実装するのでしょうか?
しかし
確かにこれは考えなければいけない問題ですね。mitsugu さんが書きました:
- browser.download.useDownloadDir を書換えることで希望される挙動が実現されるのか
- 拡張で既存の項目を書換えることの是非(拡張の機能の実行を終了したタイミングで元の状態に戻せば倫理的にOK?)
僕が実装したかった機能は、一般的にはどのように実装するのでしょうか?
Re: アドオンでconfig情報変更
正解は存在しないと思いますが「私ならこうする」ということであれば次のようになります。rkさん さんが書きました: 僕が実装したかった機能は、一般的にはどのように実装するのでしょうか?
- Firefox の設定情報をトグルする機能を実装する。
- リリース・ノート等に設定をトグルすることを明記し、ユーザに示す。
- AMO エディタにもその旨伝える。
- AMO エディタの判断にまかせる。
私個人としてはユーザさんのブラウザの設定を、拡張がユーザさんに無断で変更することは、それが一時的なものであるにせよ避けたいと思っています。拡張固有の設定項目を増やす分には問題ないと考えていますが。
他にいい方法があったり、そこまでしなくてもよいという考えを持っておられる拡張作者さんもいらっしゃるでしょうから、自分も他の拡張作者さんの意見を伺いたいところです。
Re: アドオンでconfig情報変更
そうですね。 個人で使うために作っているアドオンですが、公開する場合はそのことを明記します。mitsugu さんが書きました:拡張がユーザさんに無断で変更することは、それが一時的なものであるにせよ避けたいと思っています。
お返事くださったみなさん、ありがとうございました!