它们是增量创建的吗?基本上它们是整数,但我想知道它们是否以特定方式生成。知道这一点对我正在编写的应用程序很有用。
编辑:我需要将 ID 保存在内存中,我在考虑是否可以命令它们进行搜索。如果它们是用越来越多的数字创建的,那么很容易将搜索实现为二分搜索,这就是我问的原因
最佳答案
我在与 ID 相关的文档中唯一能找到的是以下摘录:
id ( integer ) The ID of the tab. Tab IDs are unique within a browser session.
因此我们可以从中了解到,没有两个选项卡会在同一 session 中获得相同的 ID。文档中没有关于它们是如何生成的信息。
最终,我认为任何在这个意义上具有预测性的方法都注定会出现错误和失败,您应该构建响应式应用程序而不是预测性应用程序。
与其假设下一个选项卡将使用 ID # 12 打开,不如捕获选项卡的创建,然后您将知道该 ID 并可以基于该 ID 执行操作。
您需要的是 tab onCreated event
.创建选项卡后,您将获得 tab
Object您可以从中获取 tabid
和 windowid
并执行您想要的任何操作。
由于您没有告诉我们太多有关您的最终目标的信息,除了为您指明正确的方向外,我无法提供任何具体示例/代码来帮助您。
评论的继续:
如果您只是想通过 ID 查找选项卡,将选项卡元数据存储在字典而不是列表中不是更容易吗?
var metadataRepository = {};
metadataRepository[tab.id] = tab.metadata;
然后:
var metadata = metadataRepository[tabId];
if (metadata) {
// Do Stuff
}
更多信息:
从我当前的 Chrome (19.xxx...) 开始,V8 引擎支持 Array.filter(...)
的 JavaScript 1.6 方法
我做了一个小测试here模拟使用过滤器搜索数组并在每次迭代时进行类型检查和字符串搜索(常见的事情)。
我的机器(相对较新,i7-2600k)用了 25 毫秒来处理 10,000 个条目。虽然与编译语言相比这并不快,但在处理 100 个左右的选项卡时将达到亚毫秒级。我认为您不必过分担心性能。
如果您的应用不断查找此内容,请考虑使用本地缓存或上述字典。
关于javascript - Chrome 中的标签 ID 是如何生成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041613/