Greasemonkey, GM_setValue, onclick event

0

Bry

Czy ktoś ma pomysł jak zapisać wartość poprzez GM_setValue w skrypcie Greasemonkey w zdarzeniu onclick?

Od pewnej wersji GM nie zezwala na wykonywanie kilku funkcji (w tym GM_setValue) w kontekście JS ze strony - i ma to sens. Na podanej stronie jest rzekomy workaround, ale nie byłem w stanie zmusić tego kodu do działania.
Na tej stronie znalazłem jeszcze inny sposób [pomijam, że kod ma błędy składni], ale on również nie ustawia mi zmiennej.

Co generalnie chcę uzyskać [dla ułatwienia używam jQuery]:

unsafeWindow.$('#id a').bind('click', function(e) {
    var id = unsafeWindow.$(this).attr('id');
    GM_setValue('blabla' + id, 666);
});

To oczywiście nie zadziała, ale wspomniane na powyższych stronach sztuczki również mi nie działają:

unsafeWindow.$('#id a').bind('click', function(e) {
    var id = unsafeWindow.$(this).attr('id');
    window.setTimeout(GM_setValue, 0, 'blabla' + id, 666);
});

Jakieś pomysły?

<font size="1">PS. huh, Google zindeksowało tę stronę po jakiś 10 minutach i teraz wyskakuje jako pierwsza na moje zapytanie ;)</span>

0

do niedawna settimeout działał, ale coś zmienili - w ostatniej wiadomosci jest jakies obejscie, jak znalazłeś jakieś wygodniejsze do tej pory, bede wdzięczny jak sie podzielisz ;)

http://groups.google.pl/group/greasemonkey-dev/browse_thread/thread/15d288ee697654d6/5e87d876a9ef044e?hl=pl&ie=UTF-8&q=gm_setvalue+settimeout#5e87d876a9ef044e

0

Sprawdzę przy okazji, ale to wygląda jak zwykłe wywołanie setValue w zdarzeniu onclick - a to przecież zostało wyłączone.. albo nie widzę jakiegoś sprytnego hacka.

0

dobra, aktualnie takie coś mi działa z onclick (nie trzeba uzywać unsafeWindow więc problem znika ;))

...
var field_ambit = _$("input");
field_ambit.type = "button";
field_ambit.id = "clear";
field_ambit.value = "Wyczyść";
cell.appendChild(field_ambit);
field_ambit.setAttribute("onclick", "clearForm();");
window.addEventListener("click", function(event) { 
	if (event.target.id == "confirm") filter();
	else if (event.target.id == "clear") clearForm(); 
}, true);


function filter() {
  GM_setValue( 'beginTime', gid("beginTime").value); 
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1