Safari app extension 如何在Safari应用程序扩展中识别选项卡(或获取其id)?
我正在开发Safari应用程序扩展,我想识别打开的选项卡。我找不到身份证也找不到办法 Chrome有一个很棒的API来实现这一点:。我如何使用Safari应用程序扩展(在Swift中)实现这一点Safari app extension 如何在Safari应用程序扩展中识别选项卡(或获取其id)?,safari-app-extension,Safari App Extension,我正在开发Safari应用程序扩展,我想识别打开的选项卡。我找不到身份证也找不到办法 Chrome有一个很棒的API来实现这一点:。我如何使用Safari应用程序扩展(在Swift中)实现这一点 Safari tab API非常差,不包含ID()再详细一点可能会有所帮助。“ID”是什么意思?你到底想做什么? 您可以使用访问扩展处理程序中的选项卡。我自己没有测试过,但它可能看起来像这样: SFSafariApplication.getActiveWindow { (window) in w
Safari tab API非常差,不包含ID()再详细一点可能会有所帮助。“ID”是什么意思?你到底想做什么? 您可以使用访问扩展处理程序中的选项卡。我自己没有测试过,但它可能看起来像这样:
SFSafariApplication.getActiveWindow { (window) in
window?.getActiveTab { (tab) in
...do something with the tab...
}
}
再详细一点会有帮助的。“ID”是什么意思?你到底想做什么? 您可以使用访问扩展处理程序中的选项卡。我自己没有测试过,但它可能看起来像这样:
SFSafariApplication.getActiveWindow { (window) in
window?.getActiveTab { (tab) in
...do something with the tab...
}
}
你能详细说明一下你想要达到的目标吗 我想,在最坏的情况下,您可以在每个页面中插入一个脚本,在其中生成一个随机ID,并将其发送到宿主应用程序,宿主应用程序将把它们全部存储到UserDefaults中。然后,当您需要检索一个选项卡时,您将迭代所有选项卡,并使用
dispatchMessageToScript
与目标选项卡建立一些通信
SFSafariTab
从NSObject
继承hashValue
。这可以让你识别你的标签。你能详细说明一下你想要实现的目标吗
我想,在最坏的情况下,您可以在每个页面中插入一个脚本,在其中生成一个随机ID,并将其发送到宿主应用程序,宿主应用程序将把它们全部存储到UserDefaults中。然后,当您需要检索一个选项卡时,您将迭代所有选项卡,并使用dispatchMessageToScript
与目标选项卡建立一些通信
SFSafariTab
从NSObject
继承hashValue
。这可以让你识别你的标签。你是对的。这个API不容易使用。但是,有一种方法可以获取ID。sfsafari页面
本身
sfsafari页面
采用NSSecureCoding
。您可以使用savedPage.isEqual(newPage)
来比较从getActiveTab
或其他地方获得的相同页面。页面是指针或代理。但内容是独一无二的
附言
您应该非常小心使用
SFSafariExtensionHandler
。处理程序始终是一个新对象。使用单例模式保存页面索引可以确保数据不会丢失。你说得对。这个API不容易使用。但是,有一种方法可以获取ID。sfsafari页面
本身
sfsafari页面
采用NSSecureCoding
。您可以使用savedPage.isEqual(newPage)
来比较从getActiveTab
或其他地方获得的相同页面。页面是指针或代理。但内容是独一无二的
附言
您应该非常小心使用
SFSafariExtensionHandler
。处理程序始终是一个新对象。使用singleton模型保存页面索引可以确保数据不会丢失。您好,谢谢您的建议,但它不起作用。实际上,SFSafariTab不是一个表示tab对象的类,而是这个tab的代理。(“Safari窗口中选项卡的代理。”)。每次调用的哈希或对象内存引用更改:/对不起,我最初的回答,你完全正确。我编辑了我的答案。哈哈,我刚刚意识到奎因基本上推荐了同样的东西:)根据你的新描述,我想象了这个例子:你有两个标签(google.com和ebay.com)。生成随机ID(1和2),并按照建议存储在UserDefaults中。如果我关闭易趣标签,你怎么知道的?:)您好,谢谢您的建议,但它不起作用。实际上,SFSafariTab不是一个表示tab对象的类,而是这个tab的代理。(“Safari窗口中选项卡的代理。”)。每次调用的哈希或对象内存引用更改:/对不起,我最初的回答,你完全正确。我编辑了我的答案。哈哈,我刚刚意识到奎因基本上推荐了同样的东西:)根据你的新描述,我想象了这个例子:你有两个标签(google.com和ebay.com)。生成随机ID(1和2),并按照建议存储在UserDefaults中。如果我关闭易趣标签,你怎么知道的?:)您好,通过使用活动选项卡,我不知道它是哪个选项卡。你可以查看Chrome文档(),我可以通过id识别标签。如果我打开一个标签,我可以从后台再看到它,我不能说“这是我打开的同一个标签”。例如,我想打开两个选项卡,当我收到请求时,能够知道“这是第一个选项卡,第二个选项卡”啊,我明白了。我想知道您是否可以在javascript中使用一些状态?例如,当您打开一个新选项卡时,发送一条消息,该消息将设置由您的扩展管理的某个标识符。您好,通过获取活动选项卡,我不知道它是哪个选项卡。你可以查看Chrome文档(),我可以通过id识别标签。如果我打开一个标签,我可以从后台再看到它,我不能说“这是我打开的同一个标签”。例如,我想打开两个选项卡,当我收到请求时,能够知道“这是第一个选项卡,第二个选项卡”啊,我明白了。我想知道您是否可以在javascript中使用一些状态?例如,当您打开一个新选项卡时,发送一条消息,该消息将设置由您的扩展管理的某个标识符。