【发布时间】:2012-03-29 22:23:32
【问题描述】:
我有一个 Safari 扩展程序和一个 NPAPI 插件,我正在尝试获取浏览器和选项卡的标识符,该标识符在加载时一直存在,直到窗口/选项卡关闭。我使用的对象之一需要通过某个标识符查找选项卡。在我们的 Windows 实现中,它们使用窗口化 API 来获取指向窗口的指针(代表选项卡)并向上遍历父级列表以获取顶级窗口(代表浏览器)。
Mac Safari 上有类似的东西吗?
【问题讨论】:
我有一个 Safari 扩展程序和一个 NPAPI 插件,我正在尝试获取浏览器和选项卡的标识符,该标识符在加载时一直存在,直到窗口/选项卡关闭。我使用的对象之一需要通过某个标识符查找选项卡。在我们的 Windows 实现中,它们使用窗口化 API 来获取指向窗口的指针(代表选项卡)并向上遍历父级列表以获取顶级窗口(代表浏览器)。
Mac Safari 上有类似的东西吗?
【问题讨论】:
在任何在进程外运行插件(包括 64 位 Safar)的 Mac 浏览器中,都无法获得指向浏览器窗口的指针,因为窗口不能跨进程共享。此外,这个概念在任何平台上似乎都存在严重缺陷。许多浏览器允许将选项卡从一个窗口拖到另一个窗口。在这种情况下,您是否希望您的插件突然相信它在一个新页面中,即使用户甚至没有重新加载该页面?
鉴于 API 没有标签的概念,我想不出任何方法可以跟踪标签。我强烈建议重新考虑这个要求,因为从用户的角度来看它似乎非常随意。 (例如,如果我重新加载一个页面,那是一样的,但如果我关闭一个选项卡,然后立即使用浏览器的 undo-close-tab 版本重新打开它,它不是?如上所述,如果我拖动一个窗口之间的选项卡,选项卡有什么不同?)
【讨论】: