android里如何调用Js里的函数
网上都说要用webview,可是我不需要一个webview控件,我只是单纯的对于访问到的某个网页里调用Js函数从而操作该网页的某些控件的一些变化。(是在测试中用,不是开发...
网上都说要用webview,可是我不需要一个webview控件,我只是单纯的对于访问到的某个网页里调用Js函数从而操作该网页的某些控件的一些变化。(是在测试中用,不是开发)
展开
3个回答
推荐于2018-03-01
展开全部
Android中内置了WebKit模块,而该模块的Java层视图类就是WebView,所有需要使用Web浏览器功能的Android都需要创建该视图类对象显示和处理请求的网络资源。目前WebKit支持Http、Https、Ftp和JavaScript请求。
1、在Assets下放一个简单的html文件jstest.html
<HTML>
<HEAD>
<meta name="viewport" content="width=device-width, target-densitydpi=device-dpi" />
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
function showMsg(){
alert("hello world!");
}
function showMsgInAndroid(){
myjs.showMsg('hello in android!');
}
</script>
</HEAD>
<BODY>
<span>测试js使用</span>
<button id='btntest' onclick='showMsgInAndroid()'>调用android方法</button>
</BODY>
</HTML>
2、布局文件main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/rl_main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<WebView
android:id="@+id/wv_test"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/btn_showmsg"/>
<Button
android:id="@+id/btn_showmsg"
android:layout_width="200dip"
android:layout_height="40dip"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="调用html中js方法"/>
</RelativeLayout>
3、然后是Activity,MainActivity.java
package com.harold.jstest;
import com.harold.base.JSKit;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.Button;
public class MainActivity extends Activity {
private WebView mWebView;
private Button btnShowInfo;
private JSKit js;
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//初始化控件
mWebView = (WebView) findViewById(R.id.wv_test);
btnShowInfo = (Button) findViewById(R.id.btn_showmsg);
//实例化js对象
js = new JSKit(this);
//设置参数
mWebView.getSettings().setBuiltInZoomControls(true);
//内容的渲染需要webviewChromClient去实现,
//设置webviewChromClient基类,解决js中alert不弹出的问题和其他内容渲染问题
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.getSettings().setJavaScriptEnabled(true);
//把js绑定到全局的myjs上,myjs的作用域是全局的,初始化后可随处使用
mWebView.addJavascriptInterface(js, "myjs");
mWebView.loadUrl("file:///android_asset/jstest.html");
btnShowInfo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mHandler.post(new Runnable() {
@Override
public void run() {
//调用 HTML 中的javaScript 函数
mWebView.loadUrl("javascript:showMsg()");
}
});
}
});
}
}
追问
谢谢你的回答,我想问的是我不是在做开发,我是做测试,测试其他浏览器上加载的某个页面,因此没有mWebView = (WebView) findViewById(R.id.wv_test);这句话
展开全部
思路:
1、需要使用webview打开网页
2、设置webview支持脚本
3、然后通过webview的loadUrl方式进行js函数调用
代码:
webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(object,"name");//把Name="name"的对象添加到object中。object如果是this,就是window.name
webview.loadUrl("file:///android_asset/index.html");//注意这个资源的位置是跟res并列的文件夹下。,也可以打开远程的代码
android中调用js的function方法:
Callfunction(){
webview.loadUrl("javascript: function ()");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以通过js接口在webview 中写类似如下代码
mWvMain.addJavascriptInterface(new WebTOANDROIDInterface(), "stub");
public class WebTOANDROIDInterface{
@JavascriptInterface
public void jsMethod(String paramFromJS) {
if ("1".equals(paramFromJS)) {
Intent intent =new Intent(WebviewActivity.this, ShareActivity.class);
intent.putExtra("content", paramFromJS);
startActivity(intent);
// sendReq(false, paramFromJS);
// ShareActivity.shareActivity.sendReq(false, paramFromJS);
} else if ("2".equals(paramFromJS)) {
Intent intent =new Intent(WebviewActivity.this, FamilyNetworkActivity.class);
startActivity(intent);
}
然后在h5页面中填写windows.stub.jsMethod(//传值)就可以了。网上有很多类似的可以查看一下
mWvMain.addJavascriptInterface(new WebTOANDROIDInterface(), "stub");
public class WebTOANDROIDInterface{
@JavascriptInterface
public void jsMethod(String paramFromJS) {
if ("1".equals(paramFromJS)) {
Intent intent =new Intent(WebviewActivity.this, ShareActivity.class);
intent.putExtra("content", paramFromJS);
startActivity(intent);
// sendReq(false, paramFromJS);
// ShareActivity.shareActivity.sendReq(false, paramFromJS);
} else if ("2".equals(paramFromJS)) {
Intent intent =new Intent(WebviewActivity.this, FamilyNetworkActivity.class);
startActivity(intent);
}
然后在h5页面中填写windows.stub.jsMethod(//传值)就可以了。网上有很多类似的可以查看一下
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询