2009-05-13 8 views

Antwort

9

I denke das ist ein spezifisches Greasemonkey Sicherheitsproblem. Bitte sehen Sie 0.7.20080121.0 compatibility. GM erlaubt Benutzern nicht, GreaseMonkey-APIs aufzurufen, und das ist es, was Sie dort tun (Sie registrieren einen Klick-Handler mit JQuery, der im Benutzerkontext ausgeführt wird). Auf dieser Seite wird auch eine Problemumgehung angezeigt.

+0

Nizza. Danke für diese gute Antwort. +1 –

+0

Umm, ich bin verwirrt darüber, warum sie denken, dass diese Sicherheitsfixierung irgendetwas half? Im Grunde füllten sie nicht nur ein Sicherheits-Ganzes und erzählten dann jedem, wie man es trotzdem hackt und jetzt müssen wir verwirrenden Code dafür verwenden. Wie auch immer, danke ich wollte fragen, wie GM_setValue() von der Webseite aufgerufen wird, und dies tauchte auf, so rettete mir das Problem. – Jonathon

+0

Was ich frage mich, wenn es nur praktikabel ist, da alle Werte vorgegeben, oder würde diese Arbeit sind: 'unsafeWindow.someObject.registerCallback (function (Schlüssel, Wert) { setTimeout (function (Schlüssel, Wert) { GM_setValue (Schlüssel, Wert); }, 0); }); ' – Jonathon

0

Sie können diese Lösung verwenden.

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

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

Guter Trick, eigentlich. Obwohl ich denke, du meinst/* setValue */und/* getValue * /, würde der Code, den du gepostet hast, nicht wirklich laufen. ;) –

2

Ich hatte das gleiche Problem ...

Bisherige Lösung nicht für mich gearbeitet und ich fand Lösung wie diese ...

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

Perfekt, funktioniert immer noch für Greasemonkey 1.15 – berbt