2012-03-24 9 views
1

私は既にunsafeWindowの代替としてこれらのメソッドを読んでいます。しかし、私はまだそれunsafeWindowせずにRecaptchaオブジェクトを使用する動作を得ることができません。 unsafeWindowを使用して私のコードは、(このコードは正常に動作します)です:unsafeWindowのないRecaptchaを使用しますか?

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"}); 

私は運でこれを試してみました:

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

私はハック場所と間違って何をしたのですか?

私はコードをChromeコンテンツスクリプトでも使用できるようにしたいと考えています。

+1

奇妙なことに、なぜあなたはRecaptchaを追加するためにGreasemonkeyを使用していますか?あなたが人間かどうかは分かりませんか?あまりにも多くのボットがFirefoxを実行してGMを有効にします。 –

+0

私は、コンテンツページに返信フォームを提供しないフォーラム用のスクリプトを作成しました。ユーザーは他のページに移動して投稿に返信する必要があります。もちろん、返信には復習が必要です。 –

答えて

1

location.assign()新しいページを読み込みます。スクリプトと "Recaptcha"のような変数を "poofing"してください。

この場合は、unsafeWindowを使用してください。ウェブマスターがGreasemonkeyスクリプトをターゲットにしていることが分かっていない限り、それほど大きな問題ではありません。

にはrecaptchaコードが追加されているので、この場合は危険性はさらに低くなります。ターゲットページは表示されません。


更新:
OPが、これはあまりにもクロム含有量のスクリプトで動作するようにあることが示されました。その場合、両方の部分を次のように注入します:

function addJS_Node (text, s_URL) { 
    var D         = document; 
    var scriptNode       = D.createElement ('script'); 
    if (text)  scriptNode.textContent = text; 
    if (s_URL)  scriptNode.src   = s_URL; 

    var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement; 
    targ.appendChild (scriptNode); 
} 

addJS_Node (null, 'http://www.google.com/recaptcha/api/js/recaptcha_ajax.js'); 

//-- Might need a delay here, but probably not. 
addJS_Node ('Recaptcha.create(theKey,"recaptcha_widget_div",{theme:"red"});'); 
+0

実際、私は、タンパーモンキーのようなアドオンサポートを使わずに自分のスクリプトをchromeで利用できるようにしたいのですが、chromeはunsafeWindowを実行できません。 –

+0

このChromeを互換にするには、質問のようなことを言ってください!更新された回答を参照してください。 –

+0

大丈夫、それは動作します。ただ遅れが必要です。 –

関連する問題