繁体   English   中英

为什么我的非常简单的Chrome扩展程序可以在Mac上运行而不是PC?

[英]Why does my very simple Chrome extension work on Mac but not PC?

我写了一个非常简单的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上运行代码时。

所以这是我能想到的唯一解决方法:

  1. OnDetached - 存储选项卡的ID以及其窗口ID
  2. OnAttached - 检查选项卡ID是否与存储的选项卡ID匹配,并且该窗口ID现在不同。 如果是,则在旧窗口中创建新选项卡。

行为似乎很不稳定。 也许提交错误报告?

分离后的问题是标签ID更改(旧标签不再存在)。 不确定它是错误还是功能,但如果Mac和PC之间不一致则肯定是错误(可能只是性能差异 - api方法执行速度比不同计算机上的tab分离更快)。

mrtsherman是在正确的轨道上解决办法,而不是只节省的id ,你应该保存info作为id不意味着什么了。 然后,您将获得重新创建选项卡的所有信息(使用附加info获取选项卡ID,并保存分离info以获取旧位置和窗口)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM