2011-01-03 49 views
0

私はWindows 7ガジェットを作成し、ユーザーがガジェットを使ってログインできるようにします。ガジェットは、ユーザーが提供する有効な(アプリケーションドメインによって定義された)アドレスにログインします。ここで私は問題に遭遇しています。誰がいいだろう上記のコードをフォーマットすることができれば、それはちょうど私が何をしようとしているの概念を知ることが起こっている内容を正確に把握する必要はありません。innerHTMLで呼び出されるJavascript関数でこれを呼び出す

function Object(address){ 
    this.address = address 
.... 
this.loginBox = gDocument.createElement("loginBox"); 
this.loginBox.innerHTML = "<FORM name = 'myForm' action='' method='GET'><input type='text' name='usernameBox' id = 'usernameBox' VALUE=''><input type='password' id = 'passwordBox'><button type = 'button' value = 'Ok' id = 'loginButton' onclick='login()'></FORM>"; 

(注:私はこのような何かを)

ログインでは、アドレスが各オブジェクトに保持されているため、アドレス取得にthis.addressを使用できません。 loginメソッドは、技術的にプロトタイプの一部ではありません。そうだった場合、HTMLから呼び出す方法はわかりません。 (そうではありませんが、それを呼び出す方法はわかりますが、関数を実行するプロトタイプメソッドとして呼び出す方法はわかりますが、ローカル変数はありません)。

ローカル変数を知るためにmyFormによって呼び出されるログインメソッドを取得する助けがあれば、大歓迎です。取得したい変数はthis.addressです。ログイン機能は単なる機能ログインです。

+0

Mybeには、さらに多くのコードを含める必要があります...ローカル変数(ローカルのどこ)をログインメソッドでキャプチャしますか? – Jaime

+0

もう少し明確にしようとしました。 – user535617

答えて

0

フォームにドキュメントをレンダリングし、IDでボタンをルックアップしてattachEventでイベントをアタッチするだけで、スコープを制御できるようにするだけで済みます。

this.loginBox = gDocument.createElement("loginBox"); 
this.loginBox.innerHTML = "<FORM name = 'myForm' action='' method='GET'><input type='text' name='usernameBox' id = 'usernameBox' VALUE=''><input type='password' id = 'passwordBox'><button type = 'button' value = 'Ok' id = 'loginButton'></FORM>" 

// add this.loginBox to the document here 

// Look up the button in the document and add the click handler 
var button = gDocument.getElementById('loginButton'); 
button.attachEvent('onclick', this.login); 

スコープをバインドするために何かする必要があるかもしれませんが、覚えていない可能性があります。

var $this = this; 
button.attachEvent('onclick', function() { 
    $this.login.apply($this, arguments); 
}); 
+0

あなたのコードを使用しようとしましたが、実行時エラーが発生します: "オブジェクトはこのプロパティまたはメソッドをサポートしていません"。 – user535617

+0

どの行、getElementByIdまたはattachEventですか? – Hemlock

+0

attachEvent。私は、両方の異なるソリューションを使用してみました。私も設定しようとしましたbutton.onclick = this.login;それは私にエラーを与えるものではありませんが、それは機能しませんし、ボタンがクリックされたままにしておくと、それは押されたままになり、他の場所をクリックするまで解放されません。 – user535617

0

まあ、「汚い」の方法は、ちょうどこのように関数にアドレスを渡している:ヘムロックが示唆したようにエレガントな方法をやってます

this.loginBox.innerHTML = "<FORM .... id = 'loginButton' onclick='login(\"" + this.address + "\");'>Login</button></FORM>"; 

が、私は何であるかさっぱりだがとgDocument私はそれが必要な方法をサポートしているのか分からない。

+0

これで作業が終了しました。ありがとうございました。私はそれがそれを行う汚い方法だと同意するが、それは動作するように見える唯一の方法です。 – user535617

+0

@ user535617これはうまくいきました。「gDocument」とは何か、またはリンクを投稿することはできますか?たぶん、別の方法があるので、試してみる価値があります。 :) –

関連する問題