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链接.但是不能用于菜单中的特定页面
任何人都可以这样建议我......
在您的父菜单的 Web 服务中添加此脚本,其中包含您的iframe或iframes
<script>
function actfromAnd(msg){
window.frames['yourExactframe'].document.getElementById("brcd").value = msg;
}
</script>
Run Code Online (Sandbox Code Playgroud)
如果您在多个框架中使用相同的内容,请全局声明您的框架名称
我试过你的代码工作正常...在我的例子中 Frame Hope 它对你来说工作得很好
好问题....
| 归档时间: |
|
| 查看次数: |
5937 次 |
| 最近记录: |