neh*_*eha 0 javascript android webview
我正在使用以下代码在android中的javascript文件中提取字符串变量:
这个'我的javascript文件:
<script language="javascript">
EDIT:
clsVariable = "vikrant";
function refuseClick(){
clsVariable = "vikrant";
refuse.performClick();
document.getElementById("no").value = "Refuse";
}
</script>
<button type="button" id="no" onClick="refuseClick();">Je refuse</button>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在我的android类中,我在点击按钮时编写了以下方法.这个按钮点击事件我是从javascript文件调用的:
refuse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v(LOG_TAG, "variable=" + clsVariable); //This shows me null
}
});
wbvw = (WebView) findViewById (R.id.webvw);
wbvw.setWebViewClient(new HelloWebViewClient());
wbvw.getSettings().setJavaScriptEnabled(true);
WebSettings ws = wbvw.getSettings();
ws.setJavaScriptEnabled(true);
wbvw.addJavascriptInterface(clsVariable, "clsVariable");
wbvw.loadUrl("http://www.sbc.co.in/projects/AndroidTest.html");
}
Run Code Online (Sandbox Code Playgroud)
我是这个平台以及javascripting的新手.
我做错了什么?有人可以帮忙吗?
Thanx提前.
看起来你误用了addJavascriptInterface().该方法允许您将一些java对象公开给javascript.然后,您可以使用javascript调用对象的方法,并将这些调用转移到"真正的"java对象.例如,您可以声明这样一个嵌套类来访问您的java字段:
class ClsAccessor {
public void setValue(String value){
YourOuterClassName.this.clsVariable = value;
}
}
Run Code Online (Sandbox Code Playgroud)
然后将该类的实例传递给addJavascriptInterface()方法:
wbvd.addJavaScriptInterface(new ClsAccessor(), "accessor");
Run Code Online (Sandbox Code Playgroud)
然后,要为您的类字段设置一个值,您需要accessor从javascript 调用对象的setValue()方法(例如在单击处理程序中):
accessor.setValue('vikrant');
Run Code Online (Sandbox Code Playgroud)
这将导致调用java'setValue()',并且将设置您的字段变量.
请注意,片段可能不准确,我直接从我的脑袋输入:)但你应该得到原则.希望有所帮助.
| 归档时间: |
|
| 查看次数: |
5350 次 |
| 最近记录: |