我编写了一个非常简单的Chrome扩展程序。它由以下背景页面组成:
<script type="text/javascript">
chrome.tabs.onDetached.addListener(function(tabId, info){
var id = tabId;
chrome.tabs.get(id, function(tab) {
chrome.tabs.create({
windowId : info.oldWindowId,
index : info.oldPosition,
url : tab.url
});
});
});
</script>
它所做的只是允许您从窗口中拉出一个选项卡而不会从窗口中丢失该选项卡和Web地址。它在拆分时基本上会复制选项卡。
问题是这在Mac上完美运行但是当我在两台不同的Windows机器上试用它时我得到了这个错误
background.html:7Uncaught TypeError: Cannot read property 'url' of undefined
看来tab标签没有传递给get
回调。有谁知道为什么会这样?很明显,当我在Mac上运行代码时。
答案 0 :(得分:1)
所以这是我能想到的唯一解决方法:
行为似乎很不稳定。也许提交错误报告?
答案 1 :(得分:1)
问题是分离标识在分离后发生了变化(旧标记不再存在)。不确定它是错误还是功能,但如果Mac和PC之间不一致那么它肯定是一个错误(可能只是性能差异 - api方法执行速度比不同计算机上的tab分离更快)。
mrtsherman 处于正确的解决方法,只是保存id
而不是保存info
,因为id
不再具有任何意义。然后,您将获得重新创建选项卡的所有信息(使用附加info
获取选项卡ID,并保存分离的info
以获取旧位置和窗口。)