我有一个带有禁用模式的Safari浏览器扩展程序。我想要做的是在用户进入禁用模式时以编程方式更改工具栏图标。
是否有一个API可以让我实现这个目标,如果是的话,它是什么?
答案 0 :(得分:10)
您的扩展程序所拥有的任何工具栏项都可以在
中作为数组引用safari.extension.toolbarItems
每个工具栏项都有一个您可以更改的图像属性。这将导致工具栏图标立即更改。
// Change the toolbar icon.
var changeToolbarIcon = function(newIconName) {
var iconUri = safari.extension.baseURI + 'icons/' + newIconName;
safari.extension.toolbarItems[0].image = iconUri;
};
答案 1 :(得分:0)
使用新的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(...))
}