我们先来学习 怎么使用再到用js和安卓源生方法交互

WebView简单使用

此部分转载并做了补充 原博客

原因:比较简单不是很想在写,我只要写js交互部分

  1. WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。

  2. webview有两个方法:setWebChromeClient 和 setWebClient

  3. setWebClient:主要处理解析,渲染网页等浏览器做的事情

  4. setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等

  5. WebViewClient就是帮助WebView处理各种通知、请求事件的。

在AndroidManifest.xml设置访问网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

控件:

<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
/>

用途一:加载本地/Web资源



example.html 存放在assets文件夹内

调用WebView的loadUrl()方法,

加载本地资源

webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("file:///android_asset/example.html");

加载web资源:

webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("http://baidu.com");

用途二:在程序内打开网页

创建一个自己的WebViewClient,通过setWebViewClient关联

package com.example.testopen;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient; public class MainActivity extends Activity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
init(); } private void init(){
webView = (WebView) findViewById(R.id.webView);
//WebView加载web资源
webView.loadUrl("http://baidu.com");
//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
view.loadUrl(url);
return true;
}
});
} }

用途三:

如果访问的页面中有Javascript,则webview必须设置支持Javascript

//启用支持javascript
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);

用途四:

如果希望浏览的网页后退而不是退出浏览器,需要WebView覆盖URL加载,让它自动生成历史访问记录,那样就可以通过前进或后退访问已访问过的站点。

//改写物理按键——返回的逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_BACK)
{
if(webView.canGoBack())
{
webView.goBack();//返回上一页面
return true;
}
else
{
System.exit(0);//退出程序
}
}
return super.onKeyDown(keyCode, event);
}

用途五:判断页面加载过程

webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
// TODO Auto-generated method stub
if (newProgress == 100) {
// 网页加载完成 } else {
// 加载中 } }
});

用途六:缓存的使用

优先使用缓存

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

本人补充

还有一些用法由于原作者没写所以我在这里补充下 从这里开始就是原创部分:

需求:假设后台给你返回的是html标签(没有头尾标签 简单说就是没有<html><heand></head><body></body></html>)

//假设返回的字符传如下所示:

package a.com.jswebproject.bean;

/**

 */
public class JString {
public static final String CONTENT = "<p style=\"text-indent:32px;line-height:200%;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\"><img src=\"http://s1.sns.maimaicha.com/images/2015/12/31/20151231082937_53817.jpg\" style=\"float:none;\" title=\"771c3d95184d9cb2f73a7d156d332df8.jpg\" border=\"0\" hspace=\"0\" vspace=\"0\" />光阴荏苒,</span><a href=\"http://www.sanwen.net/suibi/suiyue/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">岁月</span></a><span style=\"font-size:15px;\">飞逝如电。</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">回眸花落时,</span><span style=\"font-size:15px;font-family:';\">201</span><span style=\"font-size:15px;font-family:';\">5</span><span style=\"font-size:15px;\">就这样悄然而过</span><span style=\"font-size:15px;font-family:';\">……</span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">清浅时光,积聚如山的往事随风游走,</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">带着我们内心所有的牵念,尘封于深深的</span><a href=\"http://huiyi.sanwen8.cn/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">记忆</span></a><span style=\"font-size:15px;\">里。</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">记忆,从此被定格!</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">心生温暖,四季平安!每逢岁杪,将昔年一一盘点</span><span style=\"font-size:15px;font-family:';\">……</span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">那一路,我们</span><a href=\"http://cengjing.sanwen8.cn/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">曾经</span></a><span style=\"font-size:15px;\">怎样走过?</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">那一程,谁又曾从心坎上路过?</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">诚然,认识了一些人,却也经历过许多的事。</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">浮生若</span><span style=\"font-size:15px;font-family:';\"><a href=\"http://meng.sanwen8.cn/\" target=\"_blank\"><span style=\"font-family:宋体;color:#444444;\">梦</span></a></span><span style=\"font-size:15px;\">,尘缘辗转。</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">在心里,就让那些愁殇,随风飘逝吧!</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">站在</span><span style=\"font-size:15px;font-family:';\">201</span><span style=\"font-size:15px;font-family:';\">5</span><span style=\"font-size:15px;\">与</span><span style=\"font-size:15px;font-family:';\">201</span><span style=\"font-size:15px;font-family:';\">6</span><span style=\"font-size:15px;\">年的界碑上,不禁忍不住再次回首</span><span style=\"font-size:15px;font-family:';\">——</span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">到底,有多少得失能够沉淀于心?</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">究竟,有多少</span><a href=\"http://huiyi.sanwen8.cn/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">回忆</span></a><span style=\"font-size:15px;\">值得</span><a href=\"http://yongheng.sanwen8.cn/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">永久</span></a><span style=\"font-size:15px;\">珍藏?</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<a href=\"http://shengming.sanwen8.cn/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">生命</span></a><span style=\"font-size:15px;\">中,总有一些人会成为彼此的匆匆过客;</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">岁月里,总有一些事会流逝而淡出我们的心际;</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">经年间,总有一些</span><a href=\"http://www.sanwen.net/sanwen/xinqing/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">情感</span></a><span style=\"font-size:15px;\">在磨砺中教会我们成熟。</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">经历</span><a href=\"http://rensheng.sanwen.net/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">人生</span></a><span style=\"font-size:15px;\">中的点点滴滴,阅历因此而丰硕起来。</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">学会淡定从容,坦然</span><a href=\"http://www.sanwen.net/suibi/shenghuo/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">生活</span></a><span style=\"font-size:15px;\">;</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">学会心存善念,静泊尘心。</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">活在当下,最美!在当下,</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">给与</span><a href=\"http://xiangxinziji.sanwen8.cn/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">自己</span></a><span style=\"font-size:15px;\">一份简单的期许,又或是</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">一个</span><a href=\"http://danchun.sanwen8.cn/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">纯真</span></a><span style=\"font-size:15px;\">的祈愿!</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">让明天安然,让未来更好!</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">跨年之</span><a href=\"http://ye.sanwen8.cn/\" target=\"_blank\"><span style=\"font-size:15px;color:#444444;\">夜</span></a><span style=\"font-size:15px;\">,我倚窗凝望,北极星光,绚烂如花!</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<p style=\"text-indent:32px;line-height:200%;text-align:left;margin-bottom:24px;\">\n" +
"\t<span style=\"font-size:15px;\">祈愿,</span><span style=\"font-size:15px;font-family:';\">201</span><span style=\"font-size:15px;font-family:';\">6</span><span style=\"font-size:15px;\">年每一个阳光灿烂的日子,</span><span style=\"font-size:15px;font-family:';\"></span> \n" +
"</p>\n" +
"<span style=\"font-size:15px;\">佑你,佑我,佑他!</span> \n" +
"<p>\n" +
"\t<br />\n" +
"</p>"; }

那我们看看 具体代码怎么加载上面的文字吧

package a.com.jswebproject;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebChromeClient;
import android.webkit.WebView; import qianfeng.com.jswebproject.bean.JString; public class JsonActivity extends AppCompatActivity {
private WebView mWebView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_json);
initView();
setData();
} private void setData() {
//如果你直接new WebChromeClient() 或者 new WebClient()默认在程序内打开
mWebView.setWebChromeClient(new WebChromeClient());
//params1 baseUrl 基地址 如果你需要在加载的页面里面进行相应操作,那么提交的网址会在基地址的基础上进行添加
//params2 你要加载的html
//params3 你加载的html的类型 (text/html) (text/javascript)
//params4 编码 "UTF-8" "GBK"
//params5 你访问历史路径
//http://baidu.com?username=lla&password=123456;
mWebView.loadDataWithBaseURL(null, JString.CONTENT,"text/html","UTF-8",null);
} private void initView() {
mWebView = (WebView) findViewById(R.id.wv_json_test);
}
}

再来看个有加载动画的案例 并具有刷新后退前进功能的

package qianfeng.com.jswebproject;

import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.ProgressBar; import qianfeng.com.jswebproject.client.MyChormeClient;
import qianfeng.com.jswebproject.client.MyWebViewClient; public class NetActivity extends AppCompatActivity {
private WebView mWebView;
private ActionBar mActionBar;
private ProgressBar mProgressBar; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_net);
initView();
initData();
setData();
setListener();
} private void initView() {
mWebView = (WebView) findViewById(R.id.wv_net_test);
mActionBar = getSupportActionBar();
mProgressBar = (ProgressBar) findViewById(R.id.pb_net_show);
} public void onClick(View view){
if (view!=null){
switch (view.getId()){
case R.id.bt_net_advance:
if (mWebView.canGoForward()){
mWebView.goForward();
}
break;
case R.id.bt_net_back:
if (mWebView.canGoBack()){
mWebView.goBack();
}
break;
case R.id.bt_net_refresh:
// WebView从新加载(刷新)
mWebView.reload();
break;
case R.id.bt_net_stop:
// WebView停止加载
mWebView.stopLoading();
break;
default:
break;
}
}
} private void setListener() {
} private void setData() {
// 加载网址,要确定你的网址是正确的,然后网络正常,最后权限(联网权限)
mWebView.loadUrl("http://baidu.com");
// WebView在加载网页时候需要设置一个WebViewClient 用来监听网络加载开始和介绍的
// 如果你不设置为客户端,他就会调用系统默认的浏览器来给你加载网页
//mWebView.setWebViewClient(new WebViewClient());
MyWebViewClient webViewClient = new MyWebViewClient();
webViewClient.setClientListener(new MyWebViewClient.ClientCallBack() {
@Override
public void onStart(String url) {
// 设置控件显示和隐藏或者消失
mProgressBar.setVisibility(View.VISIBLE);
} @Override
public void onFinish(String url) {
mProgressBar.setVisibility(View.GONE);
}
});
mWebView.setWebViewClient(webViewClient);
// 给WebView设置一个ChormeClient,来检测网页加载进度和收到的标题
// mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebChromeClient(new MyChormeClient());
MyChormeClient client = new MyChormeClient();
client.setChormeListener(new MyChormeClient.ChormeCallBack() {
@Override
public void onProgressChanged(int progress) {
// 给ProgressBar设置进度
mProgressBar.setProgress(progress); } @Override
public void onReceivedTitle(String title) {
if (!TextUtils.isEmpty(title)){
mActionBar.setTitle(title);
}
}
});
mWebView.setWebChromeClient(client);
// 获取WebView的基本设置
WebSettings settings = mWebView.getSettings();
// 设置和js交互是否可用
settings.setJavaScriptEnabled(true);
mWebView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { }
}); } private void initData() {
}
// 当用户按下返回键的时候,系统就会调用这个方法
@Override
public void onBackPressed() {
// 判断WebView是否能够返回
if (mWebView.canGoBack()){
// 如果能返回,就返回WebView的内容
mWebView.goBack();
}else {
super.onBackPressed();
} }
}

JS方法调用安卓方法

  1. 我们创建一个类 用于给js交互

    如果你的方法想给js调用,此方法必须加上注解@JavascriptInterface

     class JS {
    
            //如果此方法想 被js调用必须写此注解
    @JavascriptInterface
    public void showToast(String msg){
    Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
    } @JavascriptInterface
    public void sub(int a,int b){
    Toast.makeText(MainActivity.this, (a+b)+"", Toast.LENGTH_SHORT).show();
    }
    }
  2. 添加此类到webView中

//第二个参数随意 当HTML5工程师想调用js方法时
// 第二个参数名字.方法名
//如:Android.sub(20,30)
JS js = new JS();
webView.addJavascriptInterface(js,"Android");
  1. js 使用时 调用

    先来看看html 源码吧
<html>
<meta charset="UTF-8">
<head>
<title>这是我的第一个html</title>
<script type="text/javascript">
function add (a ,b){
var count = a+b;
var textHtml = document.getElementById("result_text");
textHtml.innerHTML = count;
}
function showToast(msg){
Android.showToast(msg);
} function sub(a,b){
Android.sub(a,b);
}
function test(msg){
var textHtml = document.getElementById("result_text");
textHtml.innerHTML = msg;
} </script>
</head>
<body>
<h1>这是啥啊</h1>
<h2>这是啥啊</h2>
<h3>这是啥啊</h3>
<h4>这是啥</h4> <p>CSDN的朋友们一起学习</p>
<input value="这是一个button" type="button" onclick="javascript:alert('大家好')"><br/>
<input value="点击我试试" type="button" onclick="add(20,10)"><br/>
<input value="点击调用Android显示一个Toast" type="button" onclick="showToast('这是来着网页的文本')"><br/>
<input value="点击调用Android 进行一个减法" type="button" onclick="sub(90,10)"> <a href="https://baidu.com">点击去百度</a> <form>
<label><input type="text" name="username"></label>
<label><input type="text" name="password"></label>
<input type="submit" name="点击提交"> </form> <div id="result_text"></div> </body> </html>

核心部分:

 <script type="text/javascript">

        function showToast(msg){
Android.showToast(msg);
} function sub(a,b){
Android.sub(a,b);
}
</script>

//感谢同学们

安卓调用JS

  webView.loadUrl("javascript:test('你好啊朋友')");

test为js中的方法

function test(msg){
var textHtml = document.getElementById("result_text");
textHtml.innerHTML = msg;
}

好了大家看下完整一点的代码吧

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { private WebView webView;
private WebSettings settings; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
} private void initView() {
webView = (WebView) findViewById(R.id.webView);
webView.setWebChromeClient(new WebChromeClient());
settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/haha.html");
JS js = new JS();
webView.addJavascriptInterface(js,"Android"); } class JS { //如果此方法想 被js调用必须写此注解
@JavascriptInterface
public void showToast(String msg){
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
} @JavascriptInterface
public void sub(int a,int b){
Toast.makeText(MainActivity.this, (a+b)+"", Toast.LENGTH_SHORT).show();
}
} public void onClick(View view) {
webView.loadUrl("javascript:test('你好啊朋友')");
}
}

源码:github源码

安卓高级 WebView的使用到 js交互的更多相关文章

  1. Android应用开发 WebView与服务器端的Js交互

    最近公司再添加功能的时候,有一部分功能是用的html,在一个浏览器或webview中展示出html即可.当然在这里我们当然用webview控件喽 WebApp的好处: 在应用里嵌套web的好处有这么几 ...

  2. webview中java与js交互

    WebView提供了在Android应用中展示网页的强大功能.也是目前Hybird app的大力发展的基础.作为Android系统的一个非常重要的组件,它提供两方面的强大的能力:对HTML的解析,布局 ...

  3. webView和js交互

    与 js 交互 OC 调用 JS // 执行 js - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *title = [web ...

  4. Android WebView加载本地html并实现Java与JS交互

    最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是 ...

  5. WebApp:如何让安卓的webview缓存webapp的html、js和图片等资源

    一.开发环境     客户端:安卓+webview(vuejs)     服务器端:tomcat 8.0 二.问题     使用安卓原生+web(基于webpack+vuejs)的方式开发了一个安卓应 ...

  6. iOS webView与js交互在文本空格上输入文字

    项目要求:webview加载html网址,内容为填空题型文本,需要在横线上添加答案,并点击提交按钮后再将答案进行回显 正常加载的效果图片: 这个是用js交互后的效果图: 点击空格,输入想输入的答案,如 ...

  7. Webview Android与js交互

    Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML) ...

  8. 安卓中webview读取html,同时嵌入Flex的SWF,交互

    安卓中webview读取html,同时嵌入Flex的SWF,交互 安卓activity与html交互很简单,用javascript接口即可,网上一堆的例子,基本上没多大问题. 在html里面嵌入swf ...

  9. Mac Webview OC与JS交互实现

    1.首先,需要定义一个JS可识别的变量(如external)用于OC与JS交互 - (void)webView:(WebView *)sender didClearWindowObject:(WebS ...

随机推荐

  1. 列表&元组的内置方法

    标红为元组可以使用

  2. Java多线程之interrupt()的深度研究

    近期学习Java多线程的中断机制,网上的帖子说得很浅,并没深究其原理.看了Java源码,对Java的中断机制有了略深入的理解,在这篇文章中向感兴趣的网友分享下.这篇文章主要通过一个典型例子对中断机制进 ...

  3. [LeetCode] Asteroid Collision 行星碰撞

    We are given an array asteroids of integers representing asteroids in a row. For each asteroid, the ...

  4. Shell的基本命令(第一天),根据w3c学习得

    Shell是一种应用程序,提供一个界面访问操作系统内核的服务. 1:编写shell脚本 vi test.sh #!/bin/bash #指定这个脚本需要什么解释器来执行 echo "Hell ...

  5. str_replace替换换行符失败原因

    在编程中,需要替换掉字符串的换行符再存进数据库, 语句: $str = str_replace(array('/r/n', '/r', '/n'), $str); 发现语句并没有替换,网上查找后,知道 ...

  6. “百度杯”CTF比赛 2017 二月场_onthink

    题目在i春秋ctf训练营中能找到,这题直接拿大佬的wp来充数 百度找到onethinnk的一个漏洞. 参考:http://www.hackdig.com/06/hack-36510.htm 就是注册个 ...

  7. POJ2454 Jersey Politics

    Description In the newest census of Jersey Cows and Holstein Cows, Wisconsin cows have earned three ...

  8. 洛谷P2405 non天平

    题目背景 non最近正在为自己的体重而苦恼,他想称量自己的体重.于是,他找来一个天平与许多砝码. 题目描述 砝码的重量均是n的幂次,n^1.n^2.n^3.n^4.n^5的……non想知道至少要多少个 ...

  9. C++函数式编程实现牛顿法

    In numerical analysis, Newton's method (also known as the Newton–Raphson method), named after Isaac ...

  10. java集合之ArrayList源码解读

    源自:jdk1.8.0_121 ArrayList继承自AbstractList,实现了List.RandomAccess.Cloneable.Serializable. ArrayList内部是通过 ...