我正在编写一个本机插件,用于在键盘显示时用JavaScript引发事件。我这样做:
appView.sendJavascript("cordova.fireWindowEvent('show_keyboard')")
在我的JavaScript中,我会做类似的事情:
window.addEventListener('show_keyboard', handler);
然而,这已经被PhoneGap专家称为PhoneGap中的一个大不了。这种方法有什么问题?
答案 0 :(得分:2)
寻找可信和/或官方来源的答案。
我也不是PhoneGap专家,但Apache Cordova,the engine that powers PhoneGap有its source on GitHub。
嗯,举个例子,让我们来看看Cordova如何发送它的volumedownbutton
event。我提出lines 613–621 of CordovaWebView.java:
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
this.loadUrl("javascript:cordova.fireDocumentEvent('volumedownbutton');");
return true;
}
// If volumeup key
else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
this.loadUrl("javascript:cordova.fireDocumentEvent('volumeupbutton');");
return true;
}
Cordova似乎采用了类似的方法向JavaScript发送事件。
我不确定你的同事提出的确切问题是什么,但似乎sendJavascript
is deprecated。那就是那个。但是,如果您的appView
是CordovaWebView
,则可以按照与Cordova本身相同的方式调用loadUrl
(如上所示)。
答案 1 :(得分:0)
我不是手机专家,但为什么不直接调用方法而不是使用听众呢?
例如
function keyboardShown() {
alert("test"); //or other code
}
和
appView.sendJavascript("keyboardShown();")
这样就可以消除通过侦听器的开销。
如果这仍然不能满足您的phonegap专家的要求,请问他将如何改进此代码。