加载InAppBrowser和微调加载页面后,无法inputinput字段

我有一个非常有趣的问题。 我使用inAppBrowser和微调在我的Android应用程序之一。 微调器是用ProgressDialog实现的。 这里的问题是,当我尝试通过inAppBrowser打开一个网页,并加载微调开始加载一旦页面开始加载,然后closures一旦完成加载页面,当我点击该页面的input字段,并尝试键入字母或数字,它只是停留在所谓的“locking”状态。 如果我input了一些我看不到的东西,光标只是闪烁。

为了使这更奇怪,我可以input特殊字符。 如果我点击页面周围的任何其他地方,然后再次点击相同的input字段,然后工作。 另一种情况是,当我把应用程序暂停状态,然后恢复它,input字段的工作。

此问题仅在版本5.0.1及更高版本的Android平台中发生。

inAppBrowser java文件可以在InAppBrowser java文件的 Github中find。

我的微调执行如下:

 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(); } 

这里可能是什么问题? 任何提示,build议将不胜感激。

Solutions Collecting From Web of "加载InAppBrowser和微调加载页面后,无法inputinput字段"

现在我能够解决这个问题。 问题是该特定页面input字段的焦点。 由于某种原因,一旦页面加载完成,它并没有把注意力集中在自己身上。

尝试使用editText.clearFocus()修复inAppBrowser inAppBrowser.java文件中的问题,然后使用editText.requestFocus()完全没有帮助。 但是,对我来说,解决scheme就是如此。

由于inAppBrowser有一个名为executeScript()的方法,我能够注入一些Javascript代码到具有此问题的特定input字段。 因此下面的代码做了这个技巧:

 var ref = cordova.InAppBrowser.open('http://apache.org', '_blank', location=yes'); ref.addEventListener('loadstop', function() { ref.executeScript({code: "$('#element').blur(); $('#element').focus();"}); }); 

该代码做的是,它将首先清除该特定元素的焦点,然后重新聚焦在同一个元素上。

无论版本大是什么,这都转到了任何平台上。

如果有人仍然遇到这个问题,请尝试将InAppBrowser插件更新到最新版本(1.7.2)。

 ionic cordova plugin rm cordova-plugin-inappbrowser --save ionic cordova plugin add cordova-plugin-inappbrowser --save 

版本1.7.2有这个修复

我正在使用Ionic(v3)。