我正在爲事件show_keyboard
創建偵聽器。在處理程序中,我需要解除此事件。在這種情況下,該事件是從本機android插件引發的。重新定義事件處理程序的上下文
appView.sendJavascript("cordova.fireWindowEvent('native.showkeyboard', { 'keyboardHeight':" + Integer.toString(keyboardHeight)+"});");
在addHeightHandler
,我需要this
是父addHeightHandler
爲了從中取消綁定。因此,當致電addHeightHandler
時,我將通過self
。但是,當我這樣做時,我無法訪問e
和keyboardHeight
屬性。
注:我的僱主堅持一定要做這樣的,沒有匿名函數或self
可變
/*
* When keyboard is shown, add height of keyboard to body to make scrollable.
*/
this.addHeightHandler = function (e) {
keyboardHeight = e.keyboardHeight;
//e is undefined
//do some stuff to add keyboard height
window.removeEventListener('show_keyboard', this.addHeightHandler);
};
/*
* Listen for showkeyboard events thrown by native code on Android
*/
this.addKeyboardListeners = function() {
var self = this;
window.addEventListener('native.showkeyboard', function() {
self.addHeightHandler(self)
}, false);
};
我知道有這樣做的其他方式的全局設置,但是這是我的方式已經被指示去做。我相信通過self
到addHeightHandler
意味着e
會被覆蓋,這是正確的嗎?
這是好的,但解除綁定不會工作... – Mark
喲是什麼意思?同樣,看着OP,你是否解除了同一個事件?你有''show_keyboard「'和'eventConstants.nativeShowKeyboard',那些是一樣的嗎? – Whymarrh
是的,我編輯的問題。實際上,最終我並不需要解除綁定,所以你的答案完美無缺。謝謝! – Mark