GM_getTab(cb)如何工作?

Jon*_*hon 4 userscripts tampermonkey

似乎没有有关这些功能如何工作的任何信息。我认为这些是Tampermonkey专有功能?
看起来它们旨在允许当前正在运行的Tampermonkey脚本之间进行通信。持续轮询GM_Value存储以进行更改的替代方法。这是一个非常有趣的想法。

但是我不知道如何使用它们。他们采用什么价值观,您得到什么样的对象?
您如何使用这三个功能,我的目的是否正确?

GM_getTab(cb)
获取一个持久对象,只要此选项卡处于打开状态。

GM_saveTab(tab)
保存标签对象,以在页面卸载后重新打开它。

GM_getTabs(cb)
获取数组中的所有选项卡对象,以便与其他Scrip实例进行通信。

http://forum.tampermonkey.net/viewtopic.php?f=16&t=74

los*_*der 5

我从没尝试过使用它们,但是看一下代码,它们似乎可以存储/从每个选项卡中获取所需的内容,并可以通过所有选项卡以这种方式存储所有内容。

在两个Chrome控制台上,我运行了以下命令:

var this_tab_data, all_tabs, n;

GM_getTab(function (o) {
    this_tab_data = o;
    n = this_tab_data.rand = Math.random();
    GM_saveTab(this_tab_data);
    console.info(this_tab_data);

    GM_getTabs(function (db) {
        all_tabs = db;
        console.info(n);
        for (var i in all_tabs) {
            if (all_tabs[i].rand === n) console.info("I bet I am the tab named: " + i);
            else console.info("Other tab: " + i + " has value: " + all_tabs[i].rand);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

结果(在选项卡2中):

对象{rand:0.9303610376082361}
VM779:11 0.9303610376082361
VM779:14其他标签:366的值:0.417106909211725
VM779:13我敢打赌我是一个名为371的标签页

我使用此用户脚本在chrome控制台中添加了访问权限(基于指示@match页面上的说明):

// ==UserScript==
// @name       My Fancy New Userscript
// @namespace  http://use.i.E.your.homepage/
// @version    0.1
// @description  enter something useful
// @match      http://stackoverflow.com/questions/14059078/use-the-tampermonkey-api-from-the-chrome-console
// @copyright  2012+, You
// ==/UserScript==

unsafeWindow.GM_getTab = GM_getTab;
unsafeWindow.GM_saveTab = GM_saveTab;
unsafeWindow.GM_getTabs = GM_getTabs;
Run Code Online (Sandbox Code Playgroud)

作为附带说明,我看到在关闭设置数据的选项卡后,仍可以使用GM_getTabs()访问此数据。我不确定我是否会指望这一点,但是我可能会尽量减少我留下的东西。