2014-09-11 2 views
0

Похоже, что никакой информации о работе этих функций не найдено. Я полагаю, что это эксклюзивные функции Tampermonkey?
Похоже, они предназначены для связи между текущими сценариями Tampermonkey; Альтернатива постоянному опросу хранилища GM_Value для изменений. Это действительно интересная идея.Как работает GM_getTab (cb)?

Но я понятия не имею, как их использовать; Какие значения они принимают и какой объект вы вернетесь?
Как вы используете эти три функции, и я прав в их назначении?

GM_getTab (CB)
Получить объект, который является стойким тех пор, пока эта вкладка открыта.

GM_saveTab (вкладка)
Сохранить вкладку объекта возобновить его после страницы выгрузки.

GM_getTabs (ХБ)
Получить все вкладки объектов в массиве, чтобы общаться с другими scrips экземпляров.

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

+1

Я думаю, что способ избежать непрерывного опроса - это фактически 'GM_addValueChangeListener' так:' GM_addValueChangeListener ("foobar", function (key, oldval, fval) {console.info (key + "previous:" + oldval + "value : "+ fval);});' но эти 3 функции помогут вам, если вы хотите отправить простой ключ: значения в качестве уведомлений (например, [tabId]: [tab_version] ++ или newTabOnline: [tabId]), а затем полагаться на них для общего состояния. – lossleader

ответ

2

Я никогда не пытался использовать их, но глядя на код, они, как представляется, возможность хранить/получить все, что вы хотели бы получить от каждой вкладки, а также получить все хранится в этот способ по всем вкладкам.

На двух хромированных консолей, я побежал следующее:

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); 
     } 
    }); 
}); 

Результат (на вкладке 2):

 
Object {rand: 0.9303610376082361} 
VM779:11 0.9303610376082361 
VM779:14 Other tab: 366 has value: 0.417106909211725 
VM779:13 I bet I am the tab named: 371 

я добавил доступ в хромированной консоли с помощью этого пользовательского сценария (на основе по инструкциям на указанной странице @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; 

Как примечание стороны, Я вижу, что эти данные остаются доступными с помощью GM_getTabs() после закрытия вкладок, которые его устанавливают. Я не уверен, что буду рассчитывать на это, но я, вероятно, скрою то, что оставил.

Смежные вопросы