我正在开发Safari应用程序扩展,我想确定打开的标签页。我找不到ID,也没有方法。
Chrome有一个很棒的API:https://developer.chrome.com/extensions/tabs。我该如何使用Safari App Extension(在Swift中)?
Safari选项卡API非常差,并且不包含ID(https://developer.apple.com/documentation/safariservices/sfsafaritab)
答案 0 :(得分:0)
更多细节会有所帮助。您是什么意思“ ID”?您实际上想做什么? 您可以使用SFSafariApplication API访问扩展处理程序中的标签。我没有亲自测试过,但是看起来可能像这样:
SFSafariApplication.getActiveWindow { (window) in
window?.getActiveTab { (tab) in
...do something with the tab...
}
}
答案 1 :(得分:0)
能否请您详细说明您要实现的目标?
我想,在最坏的情况下,您可以在每个页面中注入一个脚本,您将在其中生成一个随机ID,并将其发送给主机应用,该应用会将其全部存储到UserDefaults中。然后,当您需要检索一个选项卡时,可以遍历所有选项卡,并与dispatchMessageToScript
与您要定位的选项卡建立某种通信。
SFSafariTab
从hashValue
继承NSObject
。这样可以识别您的标签。
答案 2 :(得分:0)
您是对的。该API不容易使用。但是,有一种获取ID的方法。 git push --force-with-lease
本身。
SFSafariPage
采用SFSafariPage
。您可以使用NSSecureCoding
来比较从savedPage.isEqual(newPage)
得到的页面是否相同。该页面是指针或代理。但是内容是唯一的。
P.S
您应该非常注意getActiveTab
。处理程序始终是一个新对象。使用单例模型保存页面索引可以确保数据不会丢失。