MozillaZine.jp フォーラム
https://forums.mozillazine.jp/

アドオンでconfig情報変更
https://forums.mozillazine.jp/viewtopic.php?f=26&t=10924
ページ 11

作成者:  rk [ 2010年12月01日(水) 00:41 ]
記事の件名:  アドオンでconfig情報変更

ダウンロードの方法「次のフォルダに保存する」と「ファイルごとに保存先を指定する」をトグルするアドオンを作りたいのですがうまくいきません。

about:config に browser.download.useDownloadDir という項目があるので、これを変更すれば良いと思い、user_pref 関数を使ってみたのですが、アドオンの javascript 上では使用できないようです。

config 情報を変更するにはどのようにすればいいのでしょうか?

作成者:  mitsugu [ 2010年12月01日(水) 06:04 ]
記事の件名:  Re: アドオンでconfig情報変更

  1. browser.download.useDownloadDir を書換えることで希望される挙動が実現されるのか
  2. 拡張で既存の項目を書換えることの是非(拡張の機能の実行を終了したタイミングで元の状態に戻せば倫理的にOK?)

ということを考慮しなければならないとは思うのですが、とりあえずはnsIPrefBranch Interfaceを利用すれば可能です。

作成者:  Sakuraya [ 2010年12月01日(水) 21:08 ]
記事の件名:  Re: アドオンでconfig情報変更

rk さんが書きました:
config 情報を変更するにはどのようにすればいいのでしょうか?
browser.download.useDownloadDirをトグルする項目をContentAreaContextMenuに追加するuserChrome.js用のスクリプトです。
拡張を作ったことが無いのでこれが参考になるかはわかりませんが……。
コード:
(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);
})();

作成者:  rk [ 2010年12月03日(金) 08:18 ]
記事の件名:  Re: アドオンでconfig情報変更

お返事ありがとうございます。 目的の動作をさせることができました。

しかし
mitsugu さんが書きました:
[list=1]
[*]browser.download.useDownloadDir を書換えることで希望される挙動が実現されるのか
[*]拡張で既存の項目を書換えることの是非(拡張の機能の実行を終了したタイミングで元の状態に戻せば倫理的にOK?)

確かにこれは考えなければいけない問題ですね。
僕が実装したかった機能は、一般的にはどのように実装するのでしょうか?

作成者:  mitsugu [ 2010年12月03日(金) 10:01 ]
記事の件名:  Re: アドオンでconfig情報変更

rkさん さんが書きました:
僕が実装したかった機能は、一般的にはどのように実装するのでしょうか?

 正解は存在しないと思いますが「私ならこうする」ということであれば次のようになります。
  1. Firefox の設定情報をトグルする機能を実装する。
  2. リリース・ノート等に設定をトグルすることを明記し、ユーザに示す。
  3. AMO エディタにもその旨伝える。
  4. AMO エディタの判断にまかせる。

 拡張作者としてできるのは 3 までかと思います。場合によっては「AMO エディタを説得する」というのも加えてもいいかもしれません。
 私個人としてはユーザさんのブラウザの設定を、拡張がユーザさんに無断で変更することは、それが一時的なものであるにせよ避けたいと思っています。拡張固有の設定項目を増やす分には問題ないと考えていますが。

 他にいい方法があったり、そこまでしなくてもよいという考えを持っておられる拡張作者さんもいらっしゃるでしょうから、自分も他の拡張作者さんの意見を伺いたいところです。

作成者:  rk [ 2010年12月09日(木) 23:48 ]
記事の件名:  Re: アドオンでconfig情報変更

mitsugu さんが書きました:
拡張がユーザさんに無断で変更することは、それが一時的なものであるにせよ避けたいと思っています。

そうですね。 個人で使うために作っているアドオンですが、公開する場合はそのことを明記します。

お返事くださったみなさん、ありがとうございました!

ページ 11 All times are UTC + 9 hours
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/