Safari没有内置的“深色主题”或夜间模式扩展程序(如Chrome),因此当我需要在黑暗的房间里做作业(室友睡觉时)时,它确实很痛苦。幸运的是,Safari可以优先更改其默认CSS工作表。所以我写了一些东西,
`* { 颜色:rgb(176,176,176)!important;
背景:#000000!重要; }
a:link { 颜色:rgb(99,202,67)!重要; }`
通常效果很好,但是特别是在不是文本材料的情况下,我需要反复切换样式表。
所以我想知道如何创建用于切换样式表的快捷方式?
使用 AppleScript 怎么样?
答案 0 :(得分:-1)
我在各种应用程序中有很多设置,可以定期在两种状态之间切换,并使用AppleScript自动执行任务。我个人尽量不要使用UI脚本,因为它可能会出现问题,但是,在您的特定情况下,我相信使用AppleScript的UI脚本解决方案将是如何实现它。
也就是说,如果Safari已关闭,则在通过UI时对〜/ Library / Preferences / com.apple.Safari.plist文件所做的更改也可能使用defaults
命令完成,并且然后打开Safari。但是,我假设您希望能够在Safari打开的情况下即时进行此更改,而不必关闭/重新打开即可完成任务,因此无需进行UI脚本编写。
我将您问题中的代码保存为MyStyleSheet.css。
然后,我手动进行以下操作:将其设置为样式表:Safari>首选项...>高级>样式表:
完成此操作后,我将其设置回“ None Selected”,然后编写了此AppleScript脚本:
示例AppleScript代码:
if not running of application "Safari" then
display dialog "Safari is not open." buttons {"OK"} default button "OK"
return
end if
tell application "Safari" to activate
delay 0.5
tell application "System Events"
tell application process "Safari"
click menu bar item "Safari" of menu bar 1
click menu item "Preferences…" of menu 1 of menu bar item "Safari" of menu bar 1
click UI element "Advanced" of toolbar 1 of window 1
end tell
tell group 1 of group 1 of window "Advanced" of application process "Safari"
set currentStyleSheet to (value of pop up button 1)
click pop up button 1
if currentStyleSheet contains "None Selected" then
click menu item "MyStyleSheet" of menu 1 of pop up button 1
else
click menu item "None Selected" of menu 1 of pop up button 1
end if
end tell
click button 1 of window "Advanced" of application process "Safari"
end tell
我将上面的示例AppleScript代码保存为名为Toggle Safari样式表的AppleScript应用程序,并测试了它是否可以正常工作。请注意,更改样式表后,关闭Safari首选项可能会有时间延迟。滞后时间取决于打开Safari窗口的方式以及系统上同时发生的其他活动。无论是手动进行更改还是使用AppleScript进行更改,延迟都是相同的。
请注意,示例AppleScript代码就是这样,它旨在显示完成给定任务的方法。用户有责任根据需要添加任何适当的错误处理,并根据需要添加其他delay
命令。