我有一个禁用模式的 Safari 浏览器扩展。我想做的是在用户进入禁用模式时以编程方式更改工具栏图标。
是否有一个 API 可以让我实现这一点,如果有,它是什么?
我有一个禁用模式的 Safari 浏览器扩展。我想做的是在用户进入禁用模式时以编程方式更改工具栏图标。
是否有一个 API 可以让我实现这一点,如果有,它是什么?
您的扩展程序拥有的任何工具栏项都可以作为数组引用
safari.extension.toolbarItems
每个工具栏项都有一个可以更改的图像属性。这将导致工具栏图标立即更改。
// Change the toolbar icon.
var changeToolbarIcon = function(newIconName) {
var iconUri = safari.extension.baseURI + 'icons/' + newIconName;
safari.extension.toolbarItems[0].image = iconUri;
};
使用新的 Safari App Extensions API,只要你有一个引用SFSafariPage
,并且这个页面没有被固定(固定标签的窗口nil
是然后为每个工具栏项设置图标。
extension SFSafariPage {
func getContainingWindow(completionHandler: @escaping (SFSafariWindow?) -> Void) {
self.getContainingTab { $0.getContainingWindow { completionHandler($0) } }
}
func getToolbarItem(completionHandler: @escaping (SFSafariToolbarItem?) -> Void) {
self.getContainingWindow {
($0 == nil) ? completionHandler(nil) : $0.unsafelyUnwrapped.getToolbarItem { completionHandler($0) }
}
}
}
let tab: SFSafariTab = ...
tab.getToolbarItem { item in
item?.setImage(NSImage(...))
}