如何动态且安全地设置XUL密钥?

2024-05-10

我正在尝试为我的引导附加组件动态创建一个关键元素。目前,我创建了一个keyset元素并将其附加到document.getElementById('mainKeyset').parentNode with appendChild()然后创建key元素 (myKey)并将其附加到keyset。我设置了key's id, modifiers, and key属性,然后执行myKey.addEventListener('command', function() {myFunction()});添加一个函数到key。之后我就可以成功调用myFunction()通过做myKey.doCommand()。但是,当我按下我在key的属性,什么也没有发生。

我试图避免设置command and oncommand属性,因为我知道设置存在安全问题oncommand动态地,但也许我确实需要以某种方式使用它们?我有看到它说 https://developer.mozilla.org/en-US/docs/XUL/key如果没有命令或 oncommand 设置,密钥就无法工作,因此也许无法在不设置其中之一的情况下动态创建密钥。如果我将 oncommand 设置为“void(0);”,我的事件监听器就会工作。 (按照给出的例子here http://blog.fpmurphy.com/2011/02/firefox-4-restartless-add-ons.html)。但是,我不知道类似的事情是否可以通过 Mozilla 的扩展审批流程。


有关声明<key>元素需要一个command or an oncommand属性正确。看着触发按键处理程序的代码 http://hg.mozilla.org/mozilla-central/file/c190422547ed/content/xbl/src/nsXBLWindowKeyHandler.cpp#l498,它有一个优化,会忽略任何<key>已禁用或既没有command nor an oncommand属性 - 所以command这些元素甚至不会触发事件。我通过添加一个虚拟来解决这个问题oncommand包含 JavaScript 注释的属性:

key.setAttribute("oncommand", "//");

But void(0);当然作为属性值也很好。

对此进行审查不会有任何问题。您听说过的潜在安全问题正在产生oncommand动态值,例如:

key.setAttribute("oncommand", "foo('" + bar + "')");

取决于值bar(特别是当bar来自网站)这可能非常危险。但是,您不会动态生成属性值,它总是void(0);就你而言 - 所以没有问题。

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

如何动态且安全地设置XUL密钥? 的相关文章

随机推荐

  • 在浏览器中覆盖 TAB

    如果我在输入字段中输入文本并按ENTER我所知道的所有浏览器的默认行为是提交表单 但是如果我按ENTER在文本区域内添加新行 每当我按下时 有什么方法可以模仿这种行为 缩进 而不是提交表单 TAB在文本区域内 Bespin https be
  • 从 XML 构建树结构的速度很慢

    我正在将 XML 文档解析为我自己的结构 但对于大型输入来说构建它非常慢 是否有更好的方法来做到这一点 public static DomTree
  • 无法删除 OAuth 同意屏幕

    我前段时间为一个项目创建了一个OAuth 同意屏幕 https console cloud google com apis credentials consent关于 Google API 和凭证 这是非常愚蠢的 但似乎一旦创建就无法删除它
  • 为什么 Cursor.Show() 和 Cursor.Hide() 不立即隐藏或显示光标?

    我正在为可视化工具编写一个拖动系统 当您单击并拖动时 它会移动您在窗口中看到的内容 当鼠标到达面板边缘时 我开始重新定位光标 使其永远不会离开框 它跟踪光标在框内时所处的虚拟位置 这部分代码工作正常 每当有 MouseMoved 事件并且位
  • 在Python中将整数附加到列表的开头[重复]

    这个问题在这里已经有答案了 如何在列表的开头添加一个整数 1 2 3 42 1 2 3 gt gt gt x 42 gt gt gt xs 1 2 3 gt gt gt xs insert 0 x gt gt gt xs 42 1 2 3
  • 如何在每天的特定时间触发 Slack 中的斜线命令

    我想在每天的某个时间触发 Slack 中的斜杠命令 具体来说 我想每天晚上午夜清除我的状态 从文档来看 执行此操作的唯一方法似乎是通过传入Webhook https api slack com incoming webhooks 然而 使用
  • 以计数矩阵作为响应的多项式

    根据帮助multinom 包裹nnet 响应应该是一个因子或具有 K 列的矩阵 它将被解释为每个 K 类的计数 我尝试在第二种情况下使用此函数 但出现错误 这是我所做的示例代码 response lt matrix round runif
  • Wandb 自动登录到错误的用户 - 为什么?

    我按照通常的指示进行操作 pip install wandb wandb login 但后来它从未询问我的用户 因此当我将密钥粘贴到终端时询问它是否存在于 netrc文件 但一切都是错误的 iit term synthesis brando
  • 打印时不会出现日文字符

    我正在用 python 打印 Unicode 字符 到目前为止 除了日语字符之外 我使用过的所有符号都有效 当我打印字符时 它只显示 框中的问号 符号 我怎样才能解决这个问题 当我第一次回答这个问题时 我认为这可能是 python 的问题
  • 如何使用 Spring 注入 ServletContext 进行 JUnit 测试?

    我想对用 Apache CXF 编写的 RESTful 接口进行单元测试 我使用 ServletContext 来加载一些资源 所以我有 Context private ServletContext servletContext 如果我将其
  • Solr 动态价格范围和组

    跟进问题 如何获取 solr 结果中的方面范围 https stackoverflow com questions 33956 how to get facet ranges in solr results SolR 查询 价格范围 htt
  • 瓦廷 Windows 身份验证

    我正在尝试为使用集成身份验证的 Intranet 应用程序编写 Watin 测试 我尝试测试的网页打印 Page User Identity Name 这是我测试的一些代码 if Win32 LogonUser u UserName u D
  • ColdFusion:无效的 XML 控制字符(十六进制)

    我正在尝试使用创建一个 xml 对象
  • 在 .vscode 中调试时遇到问题

    我最近在 VSCODE 中调试时遇到了一个大问题 我尝试通过搜索网站并重新安装一些扩展来自行修复它 而不是在中显示我的结果调试控制台它将以下输出写入我的terminal cd Users AVFL Documents Programming
  • 在 SPA 中加载外部脚本和样式文件

    我有一种 SPA 它使用 API 来获取数据 该 SPA 有一些实例 它们都使用通用样式和脚本文件 所以我的问题是 当我更改这些文件中的一行时 我将必须打开每个实例并更新文件 这对我来说真的很耗时 一种方法是将这些文件放在服务器中的文件夹中
  • 安装 ROS 时 Cmake 未检测到 boost-python

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c
  • DevSettings.reload() 用于 React Native 中的注销

    问题 我正在将混合应用程序的注销功能从本机迁移到反应本机 要求 它可以在生产环境和设备上运行 它导航到应用程序的根屏幕 登录屏幕 它清除 redux 存储 很高兴有 它会取消任何飞行中的请求 最初 我们计划做这样的事情 如何重置 redux
  • 字符串格式化表达式 (Python)

    字符串格式化表达式 This is d s example 1 nice 字符串格式化方法调用 This is 0 1 example format 1 nice 我个人更喜欢方法调用 第二个示例 以提高可读性 但由于它是新的 因此随着时间
  • 无法在 css 中使用 .ani 光标?

    我自定义了网站的光标 但是CSS光标 url 仅适用于 gif png 或 cur 我想使用 ani 文件 但它只能在 IE 中使用 cursor url img mcursor cur auto IE 使用 Windows API 支持
  • 如何动态且安全地设置XUL密钥?

    我正在尝试为我的引导附加组件动态创建一个关键元素 目前 我创建了一个keyset元素并将其附加到document getElementById mainKeyset parentNode with appendChild 然后创建key元素