刚开始我是这样写的:

return { array_video, array_audio, array_iframe, array_img };

undefined inspect, 逗号的地方报错。

修改函数名也不行,反复思考,逗号报错终止解析,函数不完整,所以 undefined。

https://www.jb51.net/article/259022.htm

反复测试,返回 JSON 成功了!总结就是解析器受限,return 只能返回一个值,不能有逗号。

String js = "javascript: function inspect(){var videos=document.getElementsByTagName('video');var array_video=new Array();for(var i=0;i<videos.length;i++){array_video.push(videos[i].src);}var audios=document.getElementsByTagName('audio');var array_audio=new Array();for(var i=0;i<audios.length;i++){array_audio.push(audios[i].src);}var array_iframe=new Array();var iframes=document.getElementsByTagName('iframe');for(var i=0;i<iframes.length;i++){array_iframe.push(iframes[i].src);}var array_img=new Array();var imgs=document.getElementsByTagName('img');for(var i=0;i<imgs.length;i++){array_img.push(imgs[i].src);}var json={videos:array_video,audios:array_audio,iframes:array_iframe,imgs:array_img};return json;}";list_webView.get(currentPage).loadUrl(js);list_webView.get(currentPage).evaluateJavascript("javascript:inspect()", new ValueCallback<String>() {@Overridepublic void onReceiveValue(String value) {//Log.e(Thread.currentThread().getStackTrace()[2] + "", value);newWindow("");String html = "<html>\n<head>\n<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>\n<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'/>\n<title>资源探查</title>\n<style>\nsummary{text-align:center;font-size:2em;font-weight:bold;}\na{text-decoration:none;}\nvideo,img{max-width:100%;}\n</style>\n</head>\n<body>\n<details id='details_video'>\n<summary id='summary_video'>视频</summary>\n</details>\n<details id='details_audio'>\n<summary id='summary_audio'>音频</summary>\n</details>\n<details id='details_iframe'>\n<summary id='summary_iframe'>框架</summary>\n</details>\n<details id='details_img'>\n<summary id='summary_img'>图片</summary>\n</details>\n<script>\nvar details_video=document.getElementById('details_video');\nvar details_audio=document.getElementById('details_audio');\nvar details_iframe=document.getElementById('details_iframe');\nvar details_img=document.getElementById('details_img');\nvar summary_video=document.getElementById('summary_video');\nvar summary_audio=document.getElementById('summary_audio');\nvar summary_iframe=document.getElementById('summary_iframe');\nvar summary_img=document.getElementById('summary_img');\nvar json=eval((" + value.replace("\"", "'") + "));\nvar videos=json.videos;\nsummary_video.innerText='视频'+videos.length;\nfor(var i=0; i<videos.length; i++){\nvar video=document.createElement('video');\nvideo.src=videos[i];\nvideo.controls='controls';\ndetails_video.append(video);\nvar a=document.createElement('a');\na.href=videos[i];\na.textContent=videos[i];\na.target='_blank';\ndetails_video.appendChild(a);\n}\nvar audios=json.audios;\nsummary_audio.innerText='音频'+audios.length;\nfor(var i=0; i<audios.length; i++){\nvar audio=document.createElement('audio');\naudio.src=audios[i];\ndetails_audio.appendChild(audio);\n}\nvar iframes=json.iframes;\nsummary_iframe.innerText='框架'+iframes.length;\nfor(var i=0; i<iframes.length; i++){\nvar p = document.createElement('p');\nvar a=document.createElement('a');\na.textContent=iframes[i];\na.href=iframes[i];\na.target='_blank';\np.appendChild(a);\ndetails_iframe.appendChild(p);\n}\nvar imgs=json.imgs;\nsummary_img.innerText='图片'+imgs.length;\nfor(var i=0; i<imgs.length; i++){\nvar img=document.createElement('img');\nimg.src=imgs[i];\ndetails_img.appendChild(img);\n}\n</script>\n</body>\n</html>";//writeFile("inspect.htm", html);list_webView.get(currentPage).loadData(html, "text/html; charset=UTF-8", null);}
});

安卓浏览器JS注入返回多个对象相关推荐

  1. JS ajax 返回的json对象 新增属性值(干货)

    $.ajax({ type:"GEt'; url:"你的地址", data:{"你的字段","字段值"} success:funt ...

  2. pc 电脑web浏览器js通过usb控制安卓手机打电话挂电话(补充效果录像图)

    pc 电脑web浏览器js通过usb控制安卓手机打电话挂电话 经过几年的沉淀,我们已经将整个这个需求背景的架构与解决方案进行了高级的研发,将在下一个文档中进行概述. 电脑通过网页通过控制usb的安卓手 ...

  3. 浏览器自动注入js脚本

    浏览器自动注入js脚本 网页一般把js函数放在head元素内,注入js脚本实际上就是给head元素添加一个script的子元素.       在木头浏览器项目管理器中新建一个填写内容的步骤,添加填写项 ...

  4. 使用阿里云对象存储上传图片后,在浏览器中访问返回的url地址,直接提示下载,不是预览

    使用阿里云对象存储上传图片后,在浏览器中访问返回的url地址,直接提示下载,不是预览 不想要的效果: 想要效果: 业务逻辑层就是ServiceImpl层 之前代码: package com.ren.o ...

  5. Silverlight调用的JS方法返回对象数组的处理方法

    最近在做Silverlight应用,需要用Silverlight调用页面中Javascript方法.这个JS方法返回一个对象数组给Silverlight.对于这个对象数组怎么在Silverlight里 ...

  6. IE浏览器JS提示缺少对象的解决办法

    前端文件中写了一个AJAX取城市列表的JS方法.一个检测表单输入的JS方法,还有一些其它的JS代码. 整个页面代码在chrome和火狐浏览器下一切正常.但是在IE浏览器下在取城市列表的JS方法中提示缺 ...

  7. java 防止js注入_在WebView中如何让JS与Java安全地互相调用

    在现在安卓应用原生开发中,为了追求开发的效率以及移植的便利性,使用WebView作为业务内容展示与交互的主要载体是个不错的折中方案.那么在 这种Hybrid(混合式) App中,难免就会遇到页面JS需 ...

  8. 别问,问就是我差点在所有浏览器中注入 JavaScript 代码

     聚焦源代码安全,网罗国内外最新资讯! 专栏·供应链安全 数字化时代,软件无处不在.软件如同社会中的"虚拟人",已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为 ...

  9. 前端JS学习笔记——内置对象Math、Date 、Array、String

    目录 1.Math常用方法 2.Date()方法 如何获取Date的时间戳 Date()方法的使用 格式化日期时间 格式化输出一串时间日期 倒计时功能 3.Array方法 创建数组对象的两种方法 检测 ...

最新文章

  1. java调用ffmpeg,mencoder进行视频转换,读取时长等
  2. 咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1
  3. 一场可能改变未来的青年科学家聚会
  4. c++版 mulSpectrums
  5. java string转number_Java 序列化
  6. Dapr + .NET 实战(七)Secrets
  7. 【MATLAB统计分析与应用100例】案例006:matlab数据的标准化变换
  8. ubtunu打开firefox_如何在Firefox(在Lubuntu中)中打开“apt”链接?
  9. 1)机器学习基石笔记Lecture1:The Learning Problem
  10. NopCommerce 2.5的部署
  11. 支付宝php rsa签名验签工具,alipay rsa2 签名验证
  12. Kernel Method核方法—应用与理解
  13. [Java] 蓝桥杯ADV-85 算法提高 算术运算
  14. as3中强制垃圾回收
  15. centos mpeg acc 解码器安装
  16. javascript设置cookie高级篇可跨域访问
  17. Word文字怎么添加下划线
  18. vue优化技巧之mixins
  19. java下的Http多线程下载与断点续传分析【转自酷勤网】
  20. [ARM 的高级命名术 A32 T32 A64 Thumb Thumb2 AArch32 AArch64]

热门文章

  1. Google play内购 Iab
  2. firebug的使用
  3. java项目文件没错,但是报一个红叉叉
  4. 个人发卡网源码(可集成企业和彩虹自动发卡系统代码)+搭建文档模板
  5. mfc 中连接sql server2005
  6. XAML四大原则及五种常见布局
  7. svn两台服务器同步文件,两台svn服务器定时同步
  8. linux文件循环备份,linux下的文件备份(未完待续)
  9. 中国是什么时候用计算机几几年,中国的第一台电子计算机诞生于几几年?
  10. 《Temple Run》系列衍生放置cq9电子游戏《Temple Run:Idle Explorers》于双平台推出试玩