2011-01-03 3 views
0

Я создаю гаджет Windows 7 и позволяю пользователю войти в систему через гаджет. Гаджет будет регистрироваться в любом действительном (как определено доменом приложения) адресе, который предоставляет пользователь. Теперь я столкнулся с проблемой. Я делаю что-то вроде этого:Вызов этого в функции Javascript, вызванной innerHTML

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

(Примечание: Если кто-то может форматировать приведенный выше код, который был бы хорошо, но это не обязательно, чтобы точно знать, что происходит только знать концепцию того, что я пытаюсь сделать)

Поэтому при входе я не могу это сделать. Адрес, чтобы получить адрес, потому что адрес хранится в каждом объекте. Метод входа не является технически частью прототипа. Если бы это было так, я бы не знал, как назвать это из 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

прилагаетсяEvent. Я попытался использовать оба разных решения. Я также попытался установить button.onclick = this.login; Это не дает мне ошибку, но она также не работает, и когда она установлена, нажатие кнопки удерживает ее нажатой, она не освобождается, пока не щелкнет в другом месте. – user535617

0

Ну, «грязный» способ просто передавая адрес функции, как это:

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

элегантный способ будет делать, как предложил Hemlock, но я понятия не имею, что gDocument Я не уверен, что он поддерживает необходимые методы.

+0

Это закончилось тем, что работало, спасибо. Я согласен, что это грязный способ сделать это, но это единственный способ работать. – user535617

+0

@ user535617 рад, что он работает .. можете ли вы объяснить, что такое 'gDocument' или разместить ссылку? Возможно, есть другой способ, поэтому стоит попробовать. :) –

Смежные вопросы