白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
阅读:2352回复:6

隐藏菜单栏时,菜单栏中放置的按钮无法点击

楼主#
更多 发布于:2014-12-04 18:31

图片:1.gif



见上面的演示,纯洁profile中可以复现,应该不是扩展、脚本或样式导致的

大家都知道,在菜单栏隐藏的情况下可以通过alt键呼出菜单栏,此时点击相应菜单的话菜单栏会保持显示状态,直到失去焦点
而放置在菜单栏的按钮就没这么幸运了,只要你一点菜单栏就立刻消失掉了
在33b以前,可以通过先点击菜单选项,再点击按钮的曲线救国方法解决这个问题,而最近更新之后,即使这样也救不了这些按钮了,不管用什么方法,都没有办法点击
准确的说办法是有的:先点击菜单选项,再点击一个有下拉菜单的按钮,再点击目标按钮……不用我多说你们也知道有多麻烦

图片:2.gif



那么这个问题有什么办法解决么,比方说,有没有快捷键是切换菜单栏显示状态的(按下XX键就显示,再按就隐藏,失去焦点不会自动隐藏)
或者能将alt键的改成切换功能,禁用失去焦点隐藏的脚本?
-いたんですか? -ええ、ずっと
taoww
非常火狐
非常火狐
  • UID39284
  • 注册日期2013-03-18
  • 最后登录2024-04-28
  • 发帖数628
  • 经验574枚
  • 威望0点
  • 贡献值110点
  • 好评度99点
1楼#
发布于:2014-12-04 19:32
我这里alt调出菜单栏后,直接点击带下拉菜单的按钮调出下拉菜单,再去点击目标按钮就可以了,没必要先去点菜单选项
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
2楼#
发布于:2014-12-04 19:43
taoww:我这里alt调出菜单栏后,直接点击带下拉菜单的按钮调出下拉菜单,再去点击目标按钮就可以了,没必要先去点菜单选项回到原帖
点击菜单选项 = 点击带下拉菜单的按钮调出下拉菜单
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
3楼#
发布于:2014-12-04 22:14
我以为会有个preference来保存显示不显示菜单栏
结果状态是存在xulstore.json里的……

显示可以用
let scope = {};
Components.utils.import("resource:///modules/CustomizableUI.jsm", scope);
scope.CustomizableUI.setToolbarVisibility("toolbar-menubar", true);

隐藏
let scope = {};
Components.utils.import("resource:///modules/CustomizableUI.jsm", scope);
scope.CustomizableUI.setToolbarVisibility("toolbar-menubar", false);

但是怎么判断当前状态我还没想好
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
4楼#
发布于:2014-12-05 18:45
aaaa007cn:我以为会有个preference来保存显示不显示菜单栏
结果状态是存在xulstore.json里的……

显示可以用
let scope = {};
Components.utils.import("resource:///mo...
回到原帖
感谢!很有帮助!

现在暂时用keytweak将功能绑定到F7上使用,虽然F7被硬绑到光标模式了……不过还不算很麻烦。而且也不知道要如何修改alt的行为……
判断的话,暂时在用clientHeight凑合,虽然这个属性有点慢,不过呼出菜单栏也不常用,不算很影响体验
let scope = {};
let toolbarObj = document.getElementById("toolbar-menubar");
Components.utils.import("resource:///modules/CustomizableUI.jsm", scope);
scope.CustomizableUI.setToolbarVisibility("toolbar-menubar", toolbarObj.clientHeight==0);

p.s. 后来终于搜到了相关的bugzilla条目,创建日期2010年1月,似乎从fx4.0开始就一直有这个问题,而似乎dev完全没有要解决的意思……
-いたんですか? -ええ、ずっと
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
5楼#
发布于:2014-12-05 22:29
直接拿到 document 的话可以
let menubar = document.getElementById("toolbar-menubar");
let status = menubar.getAttribute("autohide") == "true";
setToolbarVisibility(menubar, status, false);
然后还能再加个 setTimeout 一段时间后自动隐藏掉?
改 alt 键可能比较困难?
试试能不能改 f10?
白左
千年狐狸
千年狐狸
  • UID34985
  • 注册日期2010-12-29
  • 最后登录2023-11-13
  • 发帖数2039
  • 经验655枚
  • 威望0点
  • 贡献值364点
  • 好评度69点
  • 社区居民
  • 忠实会员
6楼#
发布于:2014-12-06 01:00
aaaa007cn:直接拿到 document 的话可以let menubar = document.getElementById("toolbar-menubar");
let status = menubar.getAttribute("autohide...
回到原帖
咦原来这样也行。似乎F系列的快捷键全都是xbl绑定的,js不知道怎么重写
-いたんですか? -ええ、ずっと
游客

返回顶部