2012-03-24 10 views
1

Ich lese diese Methoden bereits als Alternative für unsafeWindow. Aber ich kann immer noch nicht funktionieren, um das Recaptcha-Objekt ohne unsafeWindow zu verwenden. Mein Code unsafeWindow Verwendung ist (dieser Code funktioniert gut):Verwenden Sie Recaptcha ohne unsafeWindow?

var myscript= document.createElement('script'); 
myscript.setAttribute('src','http://www.google.com/recaptcha/api/js/recaptcha_ajax.js'); 
document.body.appendChild(myscript); 
Recaptcha = unsafeWindow.Recaptcha; 
Recaptcha.create(theKey,"recaptcha_widget_div",{theme:"red"}); 

Ich habe versucht, dies ohne Glück:

//after script inject 
Recaptcha = location.assign("javascript:Recaptcha();void(0)"); 
Recaptcha.create(theKey,"recaptcha_widget_div",{theme:"red"}); 

Was habe ich mit der Lage falsch machen hacken?

Beachten Sie, dass der Code auch in einem Chrome-Inhaltsskript verwendet werden kann.

+1

Nur neugierig, warum verwenden Sie Greasemonkey, um recaptcha hinzufügen? Weißt du nicht, ob du ein Mensch bist oder nicht? Nicht allzu viele Bots laufen Firefox mit GM aktiviert, entweder. –

+0

Ich habe ein Skript für ein Forum erstellt, das kein Antwortformular auf der Inhaltsseite enthält. Benutzer müssen zu einer anderen Seite gehen, um auf einen Beitrag zu antworten. Und natürlich ist ein Recaptcha notwendig, um zu antworten. –

Antwort

1

location.assign() lädt eine neue Seite; "poofing" weg das Skript und alle Variablen wie Recaptcha.

In diesem Fall gehen Sie voran und verwenden Sie unsafeWindow. Es ist nicht wirklich ein großer Deal, es sei denn, Sie wissen, dass ein Webmaster Greasemonkey-Skripte anvisiert.

Es ist sogar weniger gefährlich in diesem Fall, weil Sie den recaptcha Code hinzufügen. Die Zielseite ist nicht.


Update:
Die OP darauf hingewiesen, dass dies auch in Chrome Inhalt Skripte zu arbeiten ist. In diesem Fall injizieren Sie beide Teile wie folgt:

+0

naja eigentlich würde ich gerne mein script für chrome verfügbar machen ohne addon unterstützung wie tamper affe, ohne dass chrome nicht unsafeWindow laufen kann. –

+0

Wenn Sie Chrome kompatibel machen möchten, sagen Sie dies bitte in der Frage! Siehe die aktualisierte Antwort. –

+0

okay, es funktioniert. brauche nur eine Verzögerung. –