javascript– 无法在android webview上运行show image preview?

javascript– 无法在android webview上运行show image preview?,第1张

概述首先这可能听起来像一个重复的问题,但我无法通过以前发布的问题得到任何解决方案.我有一个jsp页面通过我从PC中选择图像并显示该图像的预览在我的机器人的Chrome浏览器上工作正常也可以.但是当我在WEBVIEW上运行它时,document.getElementById.click()函数无法工作,所以我无法获得图

首先这可能听起来像一个重复的问题,但我无法通过以前发布的问题得到任何解决方案.我有一个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?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1117097.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存