Android Web-view Error I/chromium:[INFO:CONSOLE(1)]“Uncaught ReferenceError:

mlmc2os5  于 2023-05-12  发布在  Android
关注(0)|答案(3)|浏览(556)

我有一个网络服务,我已经添加了条形码阅读器的Android
因此,在JavaScript的帮助下,我从Web视图调用我的条形码阅读器
所以对于I followed this
并在服务器端设计...我已经给了这个

在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>

Android端***Webview中***

webView.addJavascriptInterface(new WebAppInterface(this), "MyApp");

新增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);
    }

我的问题是,它的工作在一个单一的HTML/PHP文件与Js在同一页或单独的页面,我已经测试了它的扫描和更新输入框中的值...
但它不工作,因为我在一个网页视图中使用了多个页面或框架...缺少的JS值如何以往任何时候都形式的服务器其打开扫描仪在点击...但是在扫描后,值没有传递到JS的输入框中,我得到了这个错误。

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

更新

1)我已经尝试了这在静态页面与JS在一边的PHP/HTML页面
2)我也尝试了同样的在一个静态页面与JS分离页
在上述两个条件下,其工作正常
但是在我的Web服务中,我已经给出了相同的JS文件,它在静态页面中成功运行,我有一个JS文件用于我的Web服务和静态页面,它在静态中工作正常,但在我的Web服务中不工作。如何以往任何时候JS是加载,因为在点击它的工作,从JS和它的开放相机,但响应后,扫描它不去网络输入
我知道我犯了错误,因为……
在我的生活页面,我有一个主菜单内的菜单,当我选择一个应用程序,其加载在iframe所以我的Android活动响应扫描后是ping到主菜单页面,但菜单没有JS功能命名为actfromAnd所以我得到错误...
在这里我不能给予该特定页面的URL(iframe),因为取决于它会改变菜单,我可以只给登录或主菜单链接直接。但不是为菜单内的特定页面
有谁能给我推荐一下这类……

vq8itlhq

vq8itlhq1#

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

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

如果您在多个框架中使用相同的名称,则全局声明您的框架名称
我试过你的代码工作正常...在我的例子框架希望它为您工作的罚款
问得好

k4ymrczo

k4ymrczo2#

  • 您应该在加载页面时执行JavaScript

mWebView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { webview.loadUrl("javascript:myFunction()"); } });

  • 代码将被执行并找到您的JavaScript函数。你现在所做的事情不会等待。
7z5jn7bk

7z5jn7bk3#

只是一个小小的笔记;如果你得到I/chromium: [INFO:CONSOLE(2)] "ERR [object Object]", source: http://...js错误,请检查你的链接安全.因为android可能不想运行所有的javascript函数传入不安全的网站。
大多数时候,你不应该再在Android中使用不安全的URL。
比如说;
http://example.com--> nonsecure url,您不应该在WebView中使用它
https://example.com-->大多数是安全的URL,您可以尝试在WebView中使用此URL

相关问题