You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复与Firefox快捷键冲突的标签搜索用户脚本?

修复Mac Firefox下的标签搜索快捷键脚本

问题根源

Mac Firefox中,Ctrl+Click、Shift+Click、Cmd+Click的默认浏览器行为(右键菜单、新窗口/标签页)会优先于脚本的click事件触发,导致原脚本的组合键逻辑仅能触发Alt(Option)+Click,其余组合完全失效。

修改后的脚本代码

var wrappers = document.querySelectorAll("td div.tags");
wrappers.forEach(function(div) {
    // 提前拦截mousedown事件,阻止浏览器默认行为
    div.addEventListener('mousedown', function(ev) {
        if (ev.altKey === true && ev.target.nodeName.toUpperCase() === "A") {
            ev.preventDefault();
            ev.stopPropagation();
        }
    }, true);

    // 处理标签添加逻辑
    div.addEventListener('click', function(ev) {
        if (ev.altKey === true && ev.target.nodeName.toUpperCase() === "A") {
            ev.preventDefault();

            var anchor = ev.target,
                linkQuery = new URLSearchParams(anchor.search);
            var tag = linkQuery.get('taglist'),
                taglist;
            if (tag) {
                // 适配Mac Firefox的组合键:
                // Option+Click → AND标签(无符号)
                // Option+Command+Click → NOT标签(-前缀)
                // Option+Command+Control+Click → OR标签(|前缀)
                if (ev.metaKey === true) {
                    tag = '-' + tag;
                    if (ev.ctrlKey === true) {
                        tag = '|' + tag;
                    }
                }
                
                var pageQuery = new URLSearchParams(window.location.search);
                taglist = pageQuery.get('taglist')?.split(' ') || [];
                if (taglist.indexOf(tag) === -1) taglist.push(tag);
                pageQuery.set('taglist', taglist.join(' '));

                window.location.search = pageQuery.toString();
            }
        }
    }, true);
});

关键修改说明

  1. 新增mousedown事件拦截:在浏览器触发右键菜单、新窗口等默认行为前,提前调用preventDefault()和stopPropagation(),确保后续click事件能正常执行脚本逻辑。
  2. 调整组合键映射:
    • 放弃原Shift+Click组合(会触发Firefox新窗口行为),改用Option+Command+Click实现NOT标签
    • 用Option+Command+Control+Click实现OR标签,避开浏览器默认快捷键冲突
  3. 兼容空taglist场景:添加可选链和默认数组,避免页面初始无taglist时出现报错。

使用方式

  • Option+Click:添加无符号的AND逻辑标签
  • Option+Command+Click:添加带-前缀的NOT逻辑标签
  • Option+Command+Control+Click:添加带|前缀的OR逻辑标签

内容的提问来源于stack exchange,提问作者KitchenConsort

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 12:17:27