2009-07-23 6 views
1

Dies ist eine Javascript-Frage. Die Tatsache, dass diese Website erwähnt wird, ist irrelevant. Diese nicht gehören auf Meta.jQuery SO Abstimmungsobjekt und Gültigkeitsbereich


Ich arbeite an einem Greasemonkey script to auto-load additional pages der Antworten auf die erste Seite der Antworten hier bei Stackoverflow, wie Sie blättern. Das funktioniert gut. Ich möchte die Möglichkeit behalten, die geladenen Elemente zu bewerten, also verwende ich $ .live(), was auch gut funktioniert.

Mein Problem ist, dass das Vote-Objekt, das von SO verwendet wird, nicht im Rahmen der $ .live() -Methode gefunden wird, oder zumindest denke ich, dass das das Problem ist.

$(".vote-up").live("click", function(D){ 
    vote.up($(D.target)); 
}); 

$.get("https://stackoverflow.com/questions/1151074", function(data){ 
    $("div.answer", data).insertAfter(".answer:last"); 
}); 

Das ist ein bisschen Beispielcode, den Sie in Ihre Firebug-Konsole zum Testen einfügen können. Sie können sehen, dass die Abstimmung im Kontext des .live() -Aufrufs nicht möglich ist. Wie kann ich das beheben?

+0

Haben Sie 'unsafeWindow.vote.up()' versucht? –

+0

@crescentfresh Das scheint mir einen Schritt näher gekommen zu sein. Die Stimmen sind jetzt bindend, aber es ist eine sehr spröde Interaktion. Trotzdem danke. – Sampson

+0

Ja, so ist es mit Greasemonkey. Es ist eine Art Sicherheitsmaßnahme. Ärgerlich, wenn Sie es vergessen haben. –

Antwort

1

Versuchen Sie unsafeWindow.vote.up().

Siehe the docs. Es ist eine Art Sicherheitsmaßnahme. Ärgerlich, wenn Sie es vergessen haben.

Verwandte Themen