
首先这可能听起来像一个重复的问题,但我无法通过以前发布的问题得到任何解决方案.我有一个Jsp页面通过我从PC中选择图像并显示该图像的预览在我的机器人的Chrome浏览器上工作正常也可以.但是当我在WEBVIEW上运行它时,document.getElementByID.click()函数无法工作,所以我无法获得图像预览.@H_502_1@
这是我的JsP页面:@H_502_1@
@H_502_1@
<!DOCTYPE HTML><HTML><head> <Meta http-equiv="Content-Type" content="text/HTML; charset=UTF-8"> <Title>JsP Page</Title> <script src="http://AJAX.GoogleAPIs.com/AJAX/libs/jquery/1.11.1/jquery.min.Js"> </script> <script> function img_prvw(ID1,ID2)/*******************show prevIEw of image*******************/{var ofiles = document.getElementByID(ID1).files;var valID_extensions = /(.jpg|.jpeg|.png)$/i;if(!(valID_extensions.test(document.getElementByID(ID1).files[0].name))){document.getElementByID('er').INNERHTML="Select jpg or png image";}else{var reader = new fileReader();reader.readAsDataURL(ofiles[0]);reader.onload=function (e) {document.getElementByID(ID2).src=e.target.result;};}} </script> </head> <body> <input type="file" ID="advrts_img" name="advrts_img" onchange="img_prvw('advrts_img','advrts_img_prvw')"><img src="images/img_place.png" ID="advrts_img_prvw" alt="" onClick="document.getElementByID('advrts_img').click()"> </body> </HTML>这是我的androID WebVIEw代码:@H_502_1@
@H_502_1@
package com.example.sample_webvIEw;import androID.app.Activity;import androID.content.Intent;import androID.content.res.Configuration;import androID.graphics.Bitmap;import androID.net.Uri;import androID.os.Bundle;import androID.vIEw.VIEw;import androID.webkit.ValueCallback;import androID.webkit.WebChromeClIEnt;import androID.webkit.WebVIEw;import androID.webkit.WebVIEwClIEnt;import androID.Widget.Progressbar;public class MainActivity extends Activity {/** Called when the activity is first created. */WebVIEw web;private ValueCallback<Uri> mUploadMessage;private final static int fileCHOOSER_RESulTCODE = 1;@OverrIDeprotected voID onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == fileCHOOSER_RESulTCODE) { if (null == mUploadMessage) return; Uri result = intent == null || resultCode != RESulT_OK ? null : intent.getData(); mUploadMessage.onReceiveValue(result); mUploadMessage = null; }}@OverrIDepublic voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); web = (WebVIEw) findVIEwByID(R.ID.wVIEw); web = new WebVIEw(this); web.getSettings().setJavaScriptEnabled(true); web.loadUrl("http://minkme.org/minkmeuser/image_prevIEw1.Jsp"); web.setWebVIEwClIEnt(new myWebClIEnt()); web.setWebChromeClIEnt(new WebChromeClIEnt() { // The undocumented magic method overrIDe // Eclipse will swear at you if you try to put @OverrIDe here // For AndroID 3.0+ public voID openfileChooser(ValueCallback<Uri> uploadMsg) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addcategory(Intent.category_OPENABLE); i.setType("image/*"); MainActivity.this.startActivityForResult( Intent.createChooser(i, "file Chooser"), fileCHOOSER_RESulTCODE); } // For AndroID 3.0+ public voID openfileChooser(ValueCallback uploadMsg, String acceptType) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addcategory(Intent.category_OPENABLE); i.setType("*/*"); MainActivity.this.startActivityForResult( Intent.createChooser(i, "file browser"), fileCHOOSER_RESulTCODE); } // For AndroID 4.1 public voID openfileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addcategory(Intent.category_OPENABLE); i.setType("image/*"); MainActivity.this.startActivityForResult( Intent.createChooser(i, "file Chooser"), MainActivity.fileCHOOSER_RESulTCODE); } }); setContentVIEw(web);}public class myWebClIEnt extends WebVIEwClIEnt { @OverrIDe public voID onPageStarted(WebVIEw vIEw, String url, Bitmap favicon) { // Todo auto-generated method stub super.onPageStarted(vIEw, url, favicon); } @OverrIDe public boolean shouldOverrIDeUrlLoading(WebVIEw vIEw, String url) { // Todo auto-generated method stub vIEw.loadUrl(url); return true; } @OverrIDe public voID onPageFinished(WebVIEw vIEw, String url) { // Todo auto-generated method stub super.onPageFinished(vIEw, url); }}// flipscreen not loading again@OverrIDepublic voID onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig);}// To handle "Back" key press event for WebVIEw to go back to prevIoUs// screen./* * @OverrIDe public boolean onKeyDown(int keyCode, KeyEvent event) { if * ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) { web.goBack(); * return true; } return super.onKeyDown(keyCode, event); } */ }我只是想使用input type =“file”浏览AndroID手机中的图像.@H_502_1@
解决方法:@H_502_1@
简而言之:请查看输入文件Input file in a webview@H_502_1@
经过一段时间和一些测试,我发现document.getElementByID.click工作得很好.我测试了以下变化@H_502_1@
的test.HTML@H_502_1@
@H_502_1@
<!DOCTYPE HTML><HTML><head> <Meta http-equiv="Content-Type" content="text/HTML; charset=UTF-8"> <Title>JsP Page</Title> <script src="jquery-1.11.1.min.Js"> </script> <script> function img_prvw(ID1,ID2)/*******************show prevIEw of image*******************/ { console.log("Call of img_prvw"); var ofiles = document.getElementByID(ID1).files; var valID_extensions = /(.jpg|.jpeg|.png)$/i; if(!(valID_extensions.test(document.getElementByID(ID1).files[0].name))) { document.getElementByID('er').INNERHTML="Select jpg or png image"; } else { var reader = new fileReader(); reader.readAsDataURL(ofiles[0]); reader.onload= function (e) { document.getElementByID(ID2).src=e.target.result; }; } } function onAdvrtsimgPrvwClick() { console.log('Clickevent'); document.getElementByID('advrts_img').click(); } </script></head><body><input type="file" ID="advrts_img" name="advrts_img" onclick="console.log('click on input');" onchange="img_prvw('advrts_img','advrts_img_prvw')"><img src="images/img_place.png" ID="advrts_img_prvw" alt="" onClick="onAdvrtsimgPrvwClick()"></body></HTML>MainActivity.java@H_502_1@
@H_502_1@
public class MainActivity extends Activity {private WebVIEw mWebvIEw;static final String TAG = "MainActivity";@OverrIDepublic voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); mWebvIEw = (WebVIEw) findVIEwByID(R.ID.webVIEw1); mWebvIEw.getSettings().setJavaScriptEnabled(true); // enable JavaScript final Activity activity = this; mWebvIEw.setWebVIEwClIEnt(new WebVIEwClIEnt() { public voID onReceivedError(WebVIEw vIEw, int errorCode, String description, String failingUrl) { Toast.makeText(activity, description, Toast.LENGTH_SHORT) .show(); } }); mWebvIEw.setWebChromeClIEnt(new WebChromeClIEnt() { @OverrIDe public boolean onConsoleMessage(ConsoleMessage cm) { String msg = cm.message() + " -- From line " + cm.lineNumber() + " of " + cm.sourceID(); switch (cm.messageLevel()) { case ERROR: Log.e(TAG, msg); break; case LOG: case TIP: Log.i(TAG, msg); break; case WARNING: Log.w(TAG, msg); break; case DEBUG: default: Log.d(TAG, msg); break; } return true; } }); mWebvIEw.loadUrl("file:///androID_asset/test.HTML"); //setContentVIEw(mWebvIEw);}}并且看起来控制台显示消息“点击输入”,因此它已被正确调用,但它是未正确调用的on更改.@H_502_1@ 总结
以上是内存溢出为你收集整理的javascript – 无法在android webview上运行show image preview?全部内容,希望文章能够帮你解决javascript – 无法在android webview上运行show image preview?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)