1

我正在开发一个 XUL Firefox 扩展。我的一个窗口是一个“选项”首选项窗口,其中包括一个textbox. textbox应该包含一个文件路径。我正在使用一个按钮并nsIFilePicker让用户选择文件。框中的文本已更新,但更改从未反映在扩展首选项中。它仅在用户直接在textbox. 即使没有使用键盘进行更改,是否有任何方法可以“强制”应用更改?

onPrivKeyBtn: function() {
  const nsIFilePicker = CI.nsIFilePicker;
  var fp = CC["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  fp.init(window, "Select File", nsIFilePicker.modeOpen);
  fp.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterXML);
  if (fp.show() != nsIFilePicker.returnCancel) {
    var file = fp.file;
    var path = fp.file.path;
    document.getElementById("privKeyBox").value = path;
  }
}

正如我之前提到的,它是一个首选项窗口。因此,我检查了直接在文本框中输入时首选项是否已更新。只有在onPrivKeyBtn函数完成更改时才会出现问题。

谢谢!

4

1 回答 1

1

您可以设置<preference>.value而不是设置文本框的值。

或者,<prefpane>有一个userChangedValue(elem)方法。

最后,您可以自己触发一个change事件 ( .createEvent(), textbox.dispatchEvent()),但这等于调用.userChangedValue(elem).

于 2013-09-24T13:00:09.737 回答