我有非常有趣的问题。我在我的一个Android应用程序中使用inAppBrowser和spinner。 Spinner使用ProgressDialog
实现。这里的问题是,当我尝试通过inAppBrowser打开一个网页时,加载微调器开始加载一旦页面开始加载,然后一旦它完成加载页面就关闭,当我点击该页面的输入字段并尝试键入字母或数字,它只是停留在所谓的"锁定"州。如果我打字我无法看到它们,光标就会一直闪烁。
为了使这更奇怪,我能够输入特殊字符。如果我点击页面周围的任何其他位置,然后再次点击相同的输入字段,然后它可以工作。另一种情况是,当我将应用程序置于Pause状态然后恢复它时,输入字段可以正常工作。
仅在5.0.1及更早版本的Android平台中出现此问题。
可以在InAppBrowser java file的Github中找到inAppBrowser java文件。
我的微调器实现如下:
spinner = new ProgressDialog(cordova.getActivity());
spinner.setIndeterminate(false);
spinner.setProgressStyle(ProgressDialog.STYLE_SPINNER);
spinner.setCancelable(false);
spinner.setMessage(cordova.getActivity().getText(R.string.spinner_loading));
spinner.setTitle("");
我用以下方式显示/隐藏一个微调器:
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
//InAppBrowser default code....
try {
JSONObject obj = new JSONObject();
obj.put("type", LOAD_START_EVENT);
obj.put("url", newloc);
sendUpdate(obj, true);
} catch (JSONException ex) {
Log.d(LOG_TAG, "Should never happen");
}
spinner.show();
}
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
try {
JSONObject obj = new JSONObject();
obj.put("type", LOAD_STOP_EVENT);
obj.put("url", url);
sendUpdate(obj, true);
} catch (JSONException ex) {
Log.d(LOG_TAG, "Should never happen");
}
spinner.hide();
}
这可能是什么问题?任何提示,建议将不胜感激。
答案 0 :(得分:5)
现在我能够解决问题。问题是该特定页面输入字段的焦点。由于某些原因,一旦页面加载完毕,它就没有关注自己。
尝试使用inAppBrowser.java
然后editText.clearFocus()
在inAppBrowser的editText.requestFocus()
文件中解决问题根本没有帮助。但对我有用的是解决方案。
由于inAppBrowser有一个名为executeScript()
的方法,我能够将一些Javascript代码注入到具有此问题的特定输入字段。因此,遵循以下代码可以解决问题:
var ref = cordova.InAppBrowser.open('http://apache.org', '_blank', location=yes');
ref.addEventListener('loadstop', function() {
ref.executeScript({code: "$('#element').blur(); $('#element').focus();"});
});
该代码的作用是首先清除该特定元素的焦点,然后再次关注该元素。
无论版本大小,这都适用于任何平台。
答案 1 :(得分:1)
如果有人仍然像我这样得到此问题,请尝试将InAppBrowser插件更新到最新版本(1.7.2)。
ionic cordova plugin rm cordova-plugin-inappbrowser --save
ionic cordova plugin add cordova-plugin-inappbrowser --save
版本1.7.2具有此fix
我正在使用Ionic(v3)。