Greasemonkey + jQuery: использование GM_setValue () в обратном вызове события - PullRequest
3 голосов
/ 14 мая 2009

Я пытаюсь установить данные в долговременном хранилище в скрипте GreaseMonkey, за исключением того, что GM_setValue (), похоже, молча терпит неудачу:

$("a#linkid").click(function()
{
    GM_setValue("foo", 123); // doesn't work, but does not generate error
});

GM_setValue("bar", 123); // works properly, value is set

Ответы [ 3 ]

9 голосов
/ 14 мая 2009

Я думаю, что это особая проблема безопасности Greasemonkey. Пожалуйста, смотрите 0.7.20080121.0 совместимость . GM не позволяет пользовательским страницам вызывать API-интерфейсы GreaseMonkey, и это то, что вы там делаете (вы регистрируете обработчик щелчков, когда JQuery работает в контексте пользователя). Обходной путь также приведен на этой странице.

2 голосов
/ 18 февраля 2012

У меня была такая же проблема ...

Предыдущее решение не работало для меня, и я нашел такое решение ...

function gmGet(name) {
    var theValue = GM_getValue(name);
    return theValue;
}

function gmSet(name, valuee) {
    GM_setValue(name, valuee);
}

$("a#linkid").click(function(){
    //setValue
    gmSet("foo", 123);

   //getValue
   gmGet("foo");
});
0 голосов
/ 21 июля 2010

Вы можете использовать это решение.

$("a#linkid").click(function()
{
    //setValue
    setTimeout(GM_setValue("foo", 123),0);

   //getValue
   setTimeout(GM_getValue("foo"),0);
});
...