关于配置首选项和js

2023-11-24

我想知道是否可以使用 javascript 获取 about:config 中设置的某些首选项的值?

动机是当用户登陆插件前端时获取我创建的 Firefox 插件中设置的首选项的值。基本上,我试图识别登陆 FE 的用户,而不要求他们明确登录。


是的你可以。

首先,您需要知道 Mozilla 使用 XPCOM 接口作为首选项系统。

使用的三个接口是nsIPref服务, nsIPref分支 and nsIPrefBranch2.

首选项服务的实例化方式与实例化任何服务的方式相同XPCOM服务.

两个例子可以清楚地说明:

// Get the root branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
                    .getService(Components.interfaces.nsIPrefBranch);

.

// Get the "extensions.myext." branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
                    .getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch("extensions.myext.");

有 3 种类型的偏好,它们是string, integer and boolean。里面有六种方法nsIPref分支读取和写入首选项:getBoolPref(), setBoolPref(), getCharPref(), setCharPref(), getIntPref() and setIntPref().

更多相关示例:

// Get the "accessibility." branch
var prefs = Components.classes["@mozilla.org/preferences-service;1"]
                    .getService(Components.interfaces.nsIPrefService).getBranch("accessibility.");

// prefs is an nsIPrefBranch.
// Look in the above section for examples of getting one.
var value = prefs.getBoolPref("typeaheadfind"); // get a pref (accessibility.typeaheadfind)
prefs.setBoolPref("typeaheadfind", !value); // set a pref (accessibility.typeaheadfind)

您还可以使用复杂类型。通过使用 nsISupportsString,它用于处理首选项中的字符串,因此,当首选项值可能包含非 ASCII 字符时,请使用它。

Example:

// prefs is an nsIPrefBranch

// Example 1: getting Unicode value
var value = prefs.getComplexValue("preference.with.non.ascii.value",
      Components.interfaces.nsISupportsString).data;

// Example 2: setting Unicode value
var str = Components.classes["@mozilla.org/supports-string;1"]
      .createInstance(Components.interfaces.nsISupportsString);
str.data = "some non-ascii text";
prefs.setComplexValue("preference.with.non.ascii.value", 
      Components.interfaces.nsISupportsString, str);

我希望你能以此解决你的疑惑。

More on 这一页.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于配置首选项和js 的相关文章

  • 之后的脚本会阻止 DOM 加载

    考虑以下代码 div class box div 令我惊讶的是 DOM 延迟了十秒的加载 10秒后出
  • 使用 ng-if 内容短暂呈现然后消失

    我的页面上有一些内容包含在 ng if 中 如下所示 div class text danger p strong Message displayed to User strong p div 然后在我的 Angular js 控制器中我有
  • 与拉斐尔的路径位置

    我如何使用 raphael js 更改路径位置 很奇怪的是 明显的方法不起作用 var p paper path some path string p attr fill red p attr x 200 y 100 not working
  • 如何使用 JavaScript 或 jQuery 清除 Google Chrome、Mozilla Firefox 和 Safari 中的剪贴板数据

    我正在开发一个网站 我想在使用 JavaScript 或 jQuery 查看我的网站时按下打印屏幕按钮时清除剪贴板数据 谁能帮我解决这个问题 我在 Internet Explorer 中成功处理了这个问题 提前致谢 由于安全原因 您无法使用
  • 热成像调色板

    自热成像早期以来 红外热像仪经常使用独特的调色板 从黑色到蓝色 品红色 橙色 黄色到亮白色 这个调色板通常被称为Iron or Ironbow 这是使用前视红外相机拍摄的图像的典型假彩色可视化 来源 维基百科 术语科特 http commo
  • 在 vuejs 上将 \n 替换为新行

    我正在尝试将 n 字符替换为来自端点的数据的新行 I tried p item licensedocument legal documentText replace r n r n g br p 并没有奏效 当我将replace 写入问题末
  • 为什么此 Firebase 可调用函数不返回值?

    我有一个应返回值的可调用函数 但唯一返回的是 null 以下是该功能的当前版本 我也尝试过回报第一个承诺 原来的once调用 最后在另一个then返回 GUID 在这种情况下它实际上返回了数据 但它立即返回并且 GUID 为空 我怎样才能实
  • innerText 和 html 之间的区别

    有什么区别innerText text and html innerText or text http docs jquery com Attributes text如果您使用的是 jQuery 不包含任何 HTML 标签 因此 如果您有一
  • 如何在模态窗口中显示pdf? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个模式窗口 其中包含锚文本 当我单击此链接时 它必须调用其他位置的 pdf 并将其显示在弹出窗口中 我怎样才能做到这一点 请帮忙
  • Vue: vue-i18n: 无法翻译 keypath 的值,使用 keypath 的值作为默认值

    我正在使用 Vue 我想展示三种语言 英语 他加禄语和宿务语 现在我有错误 无法转换键路径 NavbarMobile home 的值 使用 keypath 的值作为默认值 我通过 console log this i18n locale 检
  • 为什么使用 MarkForCheck() 和 setTimeout?

    我对 ChangeDetectorRef 中的 MarkForCheck 方法有疑问 对于一种用法我必须使用this cd markForCheck 因为在控制台中我获取了值 但它没有在视图上更新 setTimeout gt this ch
  • 如何使用 jQuery 显示“忙”指示器?

    如何在网页中的特定点显示旋转的 忙 指示器 我想在 Ajax 请求开始 完成时启动 停止指示器 这真的只是显示 隐藏 gif 动画的问题 还是有更优雅的解决方案 您可以只显示 隐藏 gif 但您也可以将其嵌入到 ajaxSetup 中 以便
  • ajax调用后如何停止刷新页面?

    ajax 调用后我无法停止刷新页面 我尝试过放置 e preventDefault 并返回 false 但我的页面又刷新了 我不知道代码有什么问题或者什么 请帮助我在ajax调用后停止刷新页面 解决这个问题对我来说会有很大的帮助 提前致谢
  • 以编程方式将子节点添加到 jstree

    我正在尝试编写一些动态添加节点到 jstree 的代码 我已经关注了医生http www jstree com documentation crrm http www jstree com documentation crrm但无法获得一个
  • 以编程方式在 Highcharts 中使用缩放绘制矩形和线条

    我正在使用 Highcharts 进行一些编程绘图Highcharts Renderer http api highcharts com highcharts Renderer using path and rect 在下面的代码中 我手动
  • 谷歌地图的灰度

    有没有什么方法可以在不丢失任何其他功能的情况下以灰度显示 Google 地图 通过 Javascript API 嵌入 是的 他们在 api V3 中引入了StyledMaps http code google com apis maps
  • 电子节点集成不起作用,也普遍奇怪的电子行为[重复]

    这个问题在这里已经有答案了 我是 Electron 的新手 我一直在努力让它工作 我遇到了无法解释的行为 所以这里有一个总结 我无法让 Electron 和 html 之间的通信正常工作 即使我有nodeIntegration true 网
  • Firefox -moz-border-radius 不会裁剪图像?

    如果设置了图像的边框半径 有谁知道如何让 Firefox 裁剪角 它包含的元素可以正常工作 但我会发现丑陋的角落伸出来 有什么方法可以解决此问题 而无需将图像设置为背景图像或在将其放在网站上之前对其进行处理吗 解决方法 将图像设置为容器元素
  • 如何在不接受焦点的元素上捕获键盘事件?

    我知道要处理输入字段中的键盘事件 您可以使用 input keyup function e var code e keyCode and 13 is the keyCode for Enter 但是 现在 我有一些div and li元素
  • 在 Chrome 扩展中使用页面的 Angular JS

    我有一个 HTML 页面 其中有一些使用 Angular 配置的 DOM 现在我正在构建一个 chrome 扩展来修改文本框中的值 element value newValue不起作用 因为文本框是用 Angular 设计的 在阅读了一些资

随机推荐

  • 如何更新绘图表达树形图以同时具有标签和绘图内的值?

    目前 plotly express 树形图仅显示树形图中的标签 如何在标签旁边包含该值 这就是为什么我不喜欢 Express 它有太多限制 要进行这些更改 您必须以任何一种方式访问 跟踪 从我的角度来看 使用普通的绘图更好 代码更透明 话虽
  • 如何在 Delphi XE 应用程序中使用 CHM HTML 帮助文件?

    Delphi 如何在 Delphi XE 应用程序中使用 CHM HTML 帮助文件 http edn embarcadero com article 27842文章介绍了如何使用 CHM 文件 我执行了那里描述的所有步骤 Added co
  • 如何更改 Android WebView 中的 FontSize?

    如何手动更改网页视图的字体大小 例如当页面在 web 视图中加载时 字体大小约为 24pt 对于我的安卓屏幕来说太大了 我查看了 网络设置 但似乎两者不相关 Thanks 我终于找到了 WebSettings webSettings web
  • 反斜杠 - 正则表达式 - Javascript

    我想构建一个 JS 函数 将参数列表连接到有效路径 因为我无法确定路径的一部分是否带有斜杠 这是函数 concatPath function var path for var i 0 i lt arguments length i path
  • 使用 Pear Mail 发送邮件的 PHP 脚本有什么问题?

    我有这个脚本 require once Mail php from Stephen lt email protected gt Google apps domain to email protected subject Hi body Hi
  • API网关CORS问题

    因此 我通过 AWS Gateway 提供的基本设置启用了 CORS 然而 对于这个 API 我需要允许所有请求的控制源并允许凭据 这是它的样子 您可能已经猜到的问题是 CORS 不允许此设置 您不能使用 Origin 通配符并将凭据设置为
  • 如何从代码隐藏中清除所有表单字段?

    HTML 有一种输入按钮类型 可以一步将表单中的所有字段重置为其初始状态
  • 如何使用JPA删除连接表中的行

    我有以下模型 一篇文章可以有一些标签 并且一些文章上可以有一个标签 所以它是与 3 个表的多对多关系 ARTICLE ARTICLE TAG TAG 当我删除标签时 我想删除 TAG 中的标签 该标签与 ARTICLE TAG 中标记的文章
  • 删除 DialogFragment 的正确方法:dismiss() 或 transaction.remove()?

    由于以下原因 我仍然遇到问题DialogFragment用于我的主要活动 我目前正在使用此代码来删除它 FragmentTransaction transaction getFragmentManager beginTransaction
  • 如何在 python 中使用 imaplib 获取电子邮件正文?

    我想从 IMAP4 服务器获取整个邮件 在 python 文档中 如果发现这段代码有效 gt gt gt t data M fetch 1 RFC822 gt gt gt body data 0 1 我想知道我是否始终可以相信 data 0
  • 如何在 Java 5 中屏蔽密码?

    我正在尝试用 Java 屏蔽密码 Sun java 建议了一种屏蔽密码的方法 如下所示 屏蔽密码 它使用一种简单的方法来做到这一点 public void run stop true while stop System out print
  • 使用自定义 AuthorizeAttribute 生成返回 URL

    我有一个自定义授权属性 using System using System Web Mvc using System Web Routing AttributeUsage AttributeTargets Class AttributeTa
  • 预取示例?

    任何人都可以给出一个示例或使用示例的链接 builtin prefetch在 GCC 或一般的 asm 指令 prefetcht0 中获得显着的性能优势 特别是 我希望该示例满足以下标准 这是一个简单 小型 独立的示例 删除 builtin
  • 角度/打字稿中的顺序代码执行

    如何让我的代码按顺序运行 例如 如果我有一个从服务获取一些数据的 for 循环 我想要n 1迭代仅在之后运行nth迭代已完成 我希望循环后的代码仅在 for 循环完成所有交互后才执行 示例代码 someMethod for var i 0
  • ChartJS 显示时间数据的差距

    我有这个图表 这是用 ChartJS 构建的 但是 在下午 1 点到 5 30 之间 没有数据 我想要图表做的就是显示没有数据 而不是连接两个点 这可以做到吗 理论上 我每 5 秒就有一个新值 但这可能会减少 所以我想我需要能够设置连接间隙
  • 如何在 sqlite.net PCL 中使用 InsertOrReplace?

    我正在使用这里的 sqlite net 的 PCL 版本 https github com oysteinkrog SQLite Net PCL 这是我的简单课程 public class LogEntry PrimaryKey AutoI
  • 非阻塞 API 是如何工作的?

    我一直在读Play 框架文档并发现这句话令人困惑 请注意 您可能会因此将阻塞代码包装在 期货 这并不意味着它是非阻塞的 它只是意味着 阻塞将发生在不同的线程中 你还需要做 确保您使用的线程池有足够的线程 处理阻塞 我的印象是所有这些非阻塞库
  • Swift 语言多播委托

    我正在尝试在 Swift 中实现多播委托功能 在 Objective C 中 我们有这个优秀的实现 https github com robbiehanson XMPPFramework blob master Utilities GCDM
  • 非托管内存未显示在任务管理器中

    我写了以下测试 实际上在更广泛的上下文中使用 IntPtr x Marshal AllocHGlobal 100000000 Console Write Press any key to continue Console ReadKey t
  • 关于配置首选项和js

    我想知道是否可以使用 javascript 获取 about config 中设置的某些首选项的值 动机是当用户登陆插件前端时获取我创建的 Firefox 插件中设置的首选项的值 基本上 我试图识别登陆 FE 的用户 而不要求他们明确登录