Android Web-view错误I/chromium:[INFO:CONSOLE(1)]"未捕获的ReferenceError:

Wha*_* On 9 javascript android webview

我有一个网络服务在我已添加Android的条形码阅读器

因此,借助JavaScript的帮助,我从web-view调用我的条形码阅读器

因此,我遵循了这一点

并在服务器端设计...我有这个

在JavaScript

    function mybarcd() {
           MyApp.mybarcdt();
        }

    function actfromAnd(msg){
           document.getElementById("brcd").value = msg;
       }


    at HTML/PHP

    <div class="data"> 
            <input id="brcd" type="text" value=""/>
            <button type="button" onClick="mybarcd()">SCAN</button>
    </div>
Run Code Online (Sandbox Code Playgroud)

在Android端 在webview中

    webView.addJavascriptInterface(new WebAppInterface(this), "MyApp");
Run Code Online (Sandbox Code Playgroud)

和新的js界面

    @JavascriptInterface
    public void mybarcdt() {

                IntentIntegrator intentIntegrator = new IntentIntegrator(Main_A.this);
                intentIntegrator.setBeepEnabled(true);
                intentIntegrator.setOrientationLocked(true);
                intentIntegrator.setPrompt("Scan Barcode");
                intentIntegrator.initiateScan();
            }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (result != null) {
            if (result.getContents() == null) {
                Log.d("ScanActivity", "Cancelled scan");
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();

            } else {

                Log.d("ScanActivity", "Scanned");

                String bcval = result.getContents();
                if (android.os.Build.VERSION.SDK_INT < 19) {
                    webView.loadUrl("javascript:actfromAnd(\""+bcval+"\")");
                }else{
                    webView.evaluateJavascript("javascript:actfromAnd(\""+bcval+"\")", null);
                }
                System.out.println("javascript:actfromAnd(\""+bcval+"\")");

            }
        } else
            super.onActivityResult(requestCode, resultCode, data);
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是它在一个Html/PHP文件中工作正常,在同一页面或单独的页面上有Js我测试了它的扫描和更新输入框中的值...

但它没有工作,因为我在一个webview中使用了多个页面或框架......它缺少JS值...如何在点击时将服务器打开扫描仪...但是在扫描之后值没有传递给输入JS的盒子我收到这个错误.....

I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: actfromAnd is not defined", source:  (1)
Run Code Online (Sandbox Code Playgroud)

更新

1)我hava尝试在静态页面中使用JS,在PHP/HTML页面
2)我也尝试使用相同的静态页面与JS单独的页面
在上述两个条件下它工作正常

但是在我的网络服务中,我有一个在静态页面中成功运行的Same JS文件,我有一个用于My Webservice和静态页面的单个JS文件,它在静态工作正常,但在MY webservice live中没有工作..如何加载JS因为点击它从那个JS和它的打开相机的wokring但在扫描后不响应web输入

我明白我得到错误因为......

在我的实时页面中我有一个MainMenu Inside菜单,当我选择一个应用程序加载时iframe所以我的Android Activity在扫描后响应正在ping主菜单页面但是对于菜单没有命名的Js函数actfromAnd所以我得到错误...

在这里我不能给出那个特定页面的URL(iframe)因为它会改变菜单,我可以直接给予Only Login或MainMenu链接.但是不能用于菜​​单中的特定页面

任何人都可以这样建议我......

Don*_*ive 3

在您的父菜单的 Web 服务中添加此脚本,其中包含您的iframeiframes

<script>
function actfromAnd(msg){
window.frames['yourExactframe'].document.getElementById("brcd").value = msg;
}
</script>
Run Code Online (Sandbox Code Playgroud)

如果您在多个框架中使用相同的内容,请全局声明您的框架名称

我试过你的代码工作正常...在我的例子中 Frame Hope 它对你来说工作得很好

好问题....