5

我有一个禁用模式的 Safari 浏览器扩展。我想做的是在用户进入禁用模式时以编程方式更改工具栏图标。

是否有一个 API 可以让我实现这一点,如果有,它是什么?

4

2 回答 2

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;
};

Safari 文档

于 2012-10-02T11:09:36.140 回答
1

使用新的 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(...))
}
于 2019-12-07T21:54:18.417 回答