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

如何通过AppleScript仅在Safari菜单栏选项勾选时取消勾选

问题根源

Safari视图菜单下的控制项分为两类,原有逻辑没有判断当前状态就直接点击,才会出现重复运行脚本反向触发的问题:

  • 普通栏控制项(状态栏/收藏栏/标签栏):文本会随状态动态切换,对应栏显示时菜单项为「Hide XX」,隐藏后菜单项变为「Show XX」
  • 全屏工具栏控制项:文本固定,点击仅切换勾选状态,勾选时全屏始终显示工具栏,未勾选时全屏自动隐藏工具栏

你提到的系统偏好设置修改方案不生效,是因为Safari当前版本的权限限制,不允许非UI脚本直接修改工具栏显示配置,模拟点击的UI脚本方案兼容性最高。

修复后的脚本

tell application "Safari" to activate
tell application "System Events"
    tell process "Safari"
        set viewMenu to menu "View" of menu bar 1
        -- 隐藏状态栏:仅当当前处于显示状态时点击
        if menu item "Hide Status Bar" of viewMenu exists then
            click menu item "Hide Status Bar" of viewMenu
        end if
        -- 隐藏收藏栏:仅当当前处于显示状态时点击
        if menu item "Hide Favorites Bar" of viewMenu exists then
            click menu item "Hide Favorites Bar" of viewMenu
        end if
        -- 隐藏标签栏:仅当当前处于显示状态时点击
        if menu item "Hide Tab Bar" of viewMenu exists then
            click menu item "Hide Tab Bar" of viewMenu
        end if
        -- 关闭全屏始终显示工具栏:仅当当前已勾选时点击
        set fullscreenToolbarItem to menu item "Always Show Toolbar in Full Screen" of viewMenu
        if fullscreenToolbarItem exists then
            -- 判断菜单项是否有勾选标记
            if value of attribute "AXMenuItemMarkChar" of fullscreenToolbarItem is not missing value then
                click fullscreenToolbarItem
            end if
        end if
    end tell
end tell

注意事项

  1. 运行前需要给执行脚本的应用(比如「脚本编辑器」、快捷指令或你用来跑脚本的其他工具)开启辅助功能权限,路径为:系统设置→隐私与安全性→辅助功能,找到对应应用勾选开关即可。
  2. 如果你的Safari是中文界面,把代码里对应的英文菜单项文本替换为中文即可,比如"Hide Status Bar"替换为"隐藏状态栏","Always Show Toolbar in Full Screen"替换为"始终在全屏显示工具栏"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:54:01