使用Phonegap直接从java调用javascript
我正在编写一个本机插件,在显示键盘时用JavaScript引发一个事件。我这样做:使用Phonegap直接从java调用javascript,javascript,android,cordova,Javascript,Android,Cordova,我正在编写一个本机插件,在显示键盘时用JavaScript引发一个事件。我这样做: appView.sendJavascript("cordova.fireWindowEvent('show_keyboard')") 在我的JavaScript中,我会执行以下操作: window.addEventListener('show_keyboard', handler); 然而,团队中的一位PhoneGap专家将此标记为PhoneGap中的一个大禁忌。这种方法有什么问题?我不是phonegap专家
appView.sendJavascript("cordova.fireWindowEvent('show_keyboard')")
在我的JavaScript中,我会执行以下操作:
window.addEventListener('show_keyboard', handler);
然而,团队中的一位PhoneGap专家将此标记为PhoneGap中的一个大禁忌。这种方法有什么问题?我不是phonegap专家,但是为什么不直接调用该方法而不是使用侦听器呢 比如说
function keyboardShown() {
alert("test"); //or other code
}
及
通过这种方式,您可以消除侦听器带来的开销
如果这仍然不能满足您的phonegap专家的要求,请询问他将如何改进此代码
从可信和/或官方来源寻求答案
嗯,我也不是电话鸿沟专家,但是,有
消息来源怎么说?
好吧,作为一个例子,让我们看看科尔多瓦如何发送它的消息。我提出:
Cordova似乎采用了类似的方法将事件发送到JavaScript
你的东西怎么了?
我不确定你的同事提出的确切问题是什么,但似乎确实如此。所以,就是这样。但是,如果您的
appView
是CordovaWebView
,您可以用与Cordova本身相同的方式调用它(如上所示)。您能进一步解释最终目标吗?我不是100%清楚在键盘显示时用javascript引发事件。你想让插件知道键盘何时显示吗?如果是这样的话,插件应该做什么呢?PhoneGap专家给出了什么作为他们的推理?我认为这种方法不被接受的原因是一个组织——javascript与java的混合。最后,我向java传递了一个javascript回调,这是可以接受的
appView.sendJavascript("keyboardShown();")
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;
}