Webview动态注入js脚本

在webview加载完成后,给所有的img便签加上本地点击事件

/** 要注入的js代码
function(){
 var objs = document.getElementsByTagName('img');
 for(var i = 0; i <objs.length; i++) {
  objs[i].onclick = function() {window.toolbox.openImage(i,this.src);
 }
};
**/
 // 注入js函数监听
public void injectImgClick() {
    mWebView.loadUrl("javascript:(function(){var objs = document.getElementsByTagName('img');for(var i = 0; i <objs.length; i++) {objs[i].onclick = function() {window.toolbox.openImage(i,this.src);};}})()");
}

然后

webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(new Object(){
    @JavascriptInterface
    public void openImage(int i, String src) {
        ArrayList<String> list = new ArrayList<String>();
        list.add(src);
        mActivity.startActivity(new Intent(mActivity, PhotoViewActivity.class).putExtra(PhotoViewActivity.EXTRA_PHOTOS, list)
                .putExtra(PhotoViewActivity.EXTRA_TYPE, PhotoViewActivity.TYPE_VIEW));
    }
}, "toolbox");

在页面数据加载完成后,注入脚本代码

webview.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        injectImgClick();
    }
});

这样点击就可以打开本地的图片浏览界面

时间: 2024-11-05 21:59:29

Webview动态注入js脚本的相关文章

动态调试JS脚本文件

动态调试JS脚本文件:(JS源映射 - sourceURL)与 debugge 问题描述: 当你以动态的方式加载 JS 文件的时候(就是动态加载JS脚本),你就会发现,调试这个加载后的动态JS太过于费劲了,很难调试,那么,以下方案帮你搞定! 解决方式1:sourceURL(源映射)—> //@ sourceURL=b.js //@ sourceURL=quarterEvaluation.js PS: @符号和 sourceURL间必须有空格,否则达不到效果.!!! @符号和 sourceURL间

动态创建js脚本和 css样式

//1.动态添加外部js文件 function loadScript(url){ var script = document.createElement("script"); script.type = "text/javacsript"; script.src = url; document.body.appendChild(script); } //2.动态添加js代码 function loadScriptString(code){ var script =

iOS 混合应用的关键点分析 - 仿 Android 平台 WebView 可注入本地对象方法的功能实现要点

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 对于 iOS 和 Android 平台来说,各自的流畅览器组件 UIWebView 和 WebView 都可以很容易地在本地代码中调用 WebVi

[转]动态加载JS脚本

动态加载JS脚本 要实现动态加载JS脚本有4种方法: 1.直接document.write <script language="javascript"> document.write("<script src='test.js'><\/script>"); </script> 2.动态改变已有script的src属性 <script src='' id="s1"></script&

JS 动态加载脚本 执行回调[transfer]

JS 动态加载脚本 执行回调 关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件里面的函数是不会成功的.本文讲解怎么在js中加载其它js文件并在加载完成后执行回调函数. 我们可以动态的创建 <script> 元素,然后通过更改它的 src 属性来加载脚本,但是怎么知道这个脚本文件加载完成了呢,因为我们有些函数需要在脚本加载完成生效后才能开始执行. 经过对网络上资源的搜索,我发现

高端黑链SEO—恶意JS脚本注入访问伪随机域名

摘要:我们的服务器又出入侵事故了.有客户的 html 网页底部被插入了一段 js 脚本,导致访客打开网页时被杀毒软件警告网站上有恶意代码.在黑链 SEO 中这是常见的手法,但奇特的地方就在于我们这次捕获到的代码,会根据当前的时间戳生成一个(伪)随机域名,然后定... 我们的服务器又出入侵事故了.有客户的 html 网页底部被插入了一段 js 脚本,导致访客打开网页时被杀毒软件警告网站上有恶意代码.在黑链 SEO 中这是常见的手法,但奇特的地方就在于我们这次捕获到的代码,会根据当前的时间戳生成一个

动态加载JS脚本的4种方法

要实现动态加载JS脚本有4种方法: 1.直接document.write <script language="javascript"> document.write("<script src='test.js'><\/script>"); </script>   2.动态改变已有script的src属性 <script src='' id="s1"></script> <

android webview与js交互(动态添加js)

1.本地html与本地html里的js交互 2.本地html与本地js交互 3.网络html与网络js交互 4.网络html与本地js交互 5.各个情况动态添加js 以上5点都可以用一种方式来模拟,在本篇中采用本地html与本地js交互 (包含动态添加js的操作) 6.拦截url请求(在webview加载完成以后,触发的请求url) 7.拦截url请求后返回自己封装的数据(基于第6点,加载完成后,触发一些请求数据的url时拦截并自己封装数据返回给webview) 注:6.7点将在下一篇博客介绍

JS 动态加载脚本 执行回调

JS 动态加载脚本  执行回调 关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件里面的函数是不会成功的.本文讲解怎么在js中加载其它js文件并在加载完成后执行回调函数. 我们可以动态的创建 <script> 元素,然后通过更改它的 src 属性来加载脚本,但是怎么知道这个脚本文件加载完成了呢,因为我们有些函数需要在脚本加载完成生效后才能开始执行. 经过对网络上资源的搜索,我发