我可以动态更改 XUL 项目的 insertafter 属性吗?

发布于 2025-01-02 13:20:25 字数 482 浏览 0 评论 0原文

我有一个 XUL menuitem 元素,它使用 insertafter 属性 将其自身定位在特定的上下文菜单项后面。有一种边缘情况我想重新定位我的菜单项。如果我使用 JavaScript 动态更改 insertafter 属性,下次显示上下文菜单时,我的项目的位置是否会自动重新定位?或者 insertafter 仅在 chrome 初始化期间应用?

文档指出:

该值可能是以逗号分隔的 id 列表,这些 id 会被扫描并 使用窗口中找到的第一个。

然而,就我而言,我可能使用的两个 ID 都实际存在(其中一个或另一个只是折叠起来,具体取决于情况)。因此,逗号分隔的列表对我没有帮助。

I have a XUL menuitem element that uses the insertafter attribute to position itself behind a specific context-menu item. There is one edge case for which I would like to reposition my menu item. If I dynamically alter the insertafter attribute using JavaScript, will the position of my item automatically reposition itself the next time the context menu is displayed? Or does insertafter only get applied during chrome initialization?

The documentation states:

This value may be a comma-separated list of ids, which are scanned and
the first one found in the window is used.

However, in my case, both IDs that I could possible use are physically present (one or the other is simply collapsed, depending on the circumstance). As such, a comma-separated list won't help me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

删除→记忆 2025-01-09 13:20:25

不,覆盖在窗口加载时应用 - 之后更改 insertafter 属性根本不会执行任何操作,该属性没有特殊含义。您应该使用常用的 DOM 方法,如下所示:

var myElement = document.getElementById("my-element");
var insertAfter = document.getElementById("element-insert-after");
if (myElement && insertAfter)
  insertAfter.parentNode.insertBefore(myElement, insertAfter.nextSibling);

No, the overlay applies when the window loads - changing insertafter attribute after that won't do anything at all, this attribute has no special meaning then. You should use the usual DOM methods, along these lines:

var myElement = document.getElementById("my-element");
var insertAfter = document.getElementById("element-insert-after");
if (myElement && insertAfter)
  insertAfter.parentNode.insertBefore(myElement, insertAfter.nextSibling);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文