私はreCAPTCHAを私のカプチーノアプリケーションに統合しています。私はreCAPTCHA入力テキストフィールドでこの奇妙な入力機能の他にすべての機能を持っています: "qwrszcv他のほとんどの文字は正常に動作しますが、他のほとんどのキーは機能しません。カプチーノ:キーボードイベントがreCAPTCHA入力フィールドで押しつぶされました
私はreCAPTCHAスクリプトファイルを先頭に挿入するためにmapkitコードを借用しました。次に、私が作成したカスタムCPViewクラスにreCAPTCHA divを挿入しました。
ここに私のコンストラクタコードです:私は、私はそれがカプチーノは、イベントを伝播する方法とは何かを持って理解
- (id)initializeRecaptcha
{
if (needsInitialization)
{
DOMRecaptchaElement = document.createElement("div");
DOMRecaptchaElement.id = "recaptcha_div_id";
var style = DOMRecaptchaElement.style,
bounds = [self bounds],
width = CGRectGetWidth(bounds),
height = CGRectGetHeight(bounds);
style.overflow = "hidden";
style.position = "absolute";
style.visibility = "visible";
style.zIndex = 0;
style.left = "0px";
style.top = "0px";
style.width = width + "px";
style.height = height + "px";
_DOMElement.appendChild(DOMRecaptchaElement);
window.Recaptcha.create("my-recaptcha-key",
"recaptcha_div_id",
{
theme: "clean",
callback: window.Recaptcha.focus_response_field
}
);
needsInitialization = NO;
}
else
{
window.Recaptcha.reload();
}
}
が、私の人生のために:
- (id)initWithFrame:(CGRect)aFrame
{
self = [super initWithFrame:aFrame];
if (self != nil)
{
var DOMScriptElement = document.createElement("script");
DOMScriptElement.src = "http://www.google.com/recaptcha/api/js/recaptcha_ajax.js";
DOMScriptElement.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(DOMScriptElement);
needsInitialization = YES;
console.log(self);
}
return self;
}
そして、私の初期化コードこの入力を機能させる方法を見つけることができません。
私はCPWebViewを使用して考えていたいやが、ちょうどIFRAMEがかもしれないと思った:私はreCAPTCHAのを保持している私のカスタムビューにはKeyDown方法にブラウザ・ウィンドウにイベントを伝播しCPTextFieldではKeyDownメソッドからコードをコピー不要な複雑さを加える。実際には、カプチーノのiframeを使用せずにカスタム入力フィールドを持つ方法はありますか? –
これを行う方法は非常にうまくいく可能性があります。努力する価値があるかどうかは分かりません。iframeはそれほど高価ではありません。しかし、実際に追加したい場合は、Javascriptデバッガでいくつかのデバッグポイントを設定し、 'index-debug.html'を使ってデバッグバージョンのアプリケーションをロードする必要があります。次に、CPPlatformWindow + DOM.jからイベント処理を追跡します。 –