首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在安卓的webview中,document.getElementsByName在某些网站上不起作用

在安卓的WebView中,document.getElementsByName 在某些网站上不起作用可能是由于以下几个原因:

基础概念

document.getElementsByName 是一个DOM方法,用于返回具有指定名称的所有元素的NodeList集合。这在处理表单元素时特别有用。

可能的原因

  1. JavaScript未启用:WebView默认可能没有启用JavaScript,这是许多现代网页运行所必需的。
  2. 同源策略限制:如果网页尝试从不同的源加载脚本,浏览器的安全策略可能会阻止这些操作。
  3. DOM未完全加载:在DOM完全加载之前尝试访问元素可能会导致方法失败。
  4. 网站使用了框架或沙箱:某些网站可能使用iframe或其他框架,这些框架可能有自己的安全策略和执行环境。

解决方案

启用JavaScript

确保WebView启用了JavaScript:

代码语言:txt
复制
WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

确保DOM加载完成

使用WebViewClient的onPageFinished方法来确保在尝试访问DOM元素之前页面已经完全加载:

代码语言:txt
复制
myWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        // 在这里执行document.getElementsByName
        myWebView.evaluateJavascript("(function() { return document.getElementsByName('elementName'); })();", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                // 处理返回的结果
            }
        });
    }
});

检查同源策略

如果问题与同源策略有关,可能需要配置WebView以允许跨域请求,但这通常不推荐因为会降低安全性。

使用框架特定的方法

如果网站使用了iframe,可能需要先切换到正确的上下文:

代码语言:txt
复制
myWebView.evaluateJavascript("(function() { return window.frames[0].document.getElementsByName('elementName'); })();", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        // 处理返回的结果
    }
});

应用场景

这种方法常用于需要自动化测试网页表单或在WebView中与网页交互的应用程序。

优势

  • 允许应用程序与嵌入的网页内容进行交互。
  • 可以自动化某些用户操作,如填写表单。

类型

  • DOM操作:直接与网页的文档对象模型交互。
  • JavaScript执行:通过WebView执行JavaScript代码以获取或修改网页元素。

通过上述方法,通常可以解决document.getElementsByName在安卓WebView中不起作用的问题。如果问题仍然存在,可能需要进一步检查网站的特定实现或考虑使用其他策略来与网页交互。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android--SVG在安卓系统中的应用

,性能高等优势,谷歌在Android5.0引进了SVG,并转化为Vector,在Android中指的是Vector Drawable,也就是Android中的矢量图,可以说Vector就是Android...中的SVG实现(并不是支持全部的SVG语法,现已支持的完全足够用了) Vector图像刚发布的时候,是只支持Android 5.0+的,自从AppCompat 23.2之后,Vector可以使用于Android...Vector 语法简介 通过使用它的Path标签,几乎可以实现SVG中的其它所有标签,虽然可能会复杂一点,但这些东西都是可以通过工具来完成的,所以,不用担心写起来会很复杂。...接下来是我们程序员需要注意的地方,在工程中使用Vector Drawable兼容5.0以下的版本方法 1、使用Android Studio 2.2以上的版本,gradle版本在2.0以上 1.1、在gradle...中添加 defaultConfig { vectorDrawables.useSupportLibrary = true } 1.2、在gradle中添加 compile

2.8K20

Java自定义注解在安卓开发中的简单运用

作用分类: ①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】 ② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】 ③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查...【Override】 java中有很多框架都用到了注解包括java的Api也是,想一些网络框架的@GTE,@POST,@PATH等等,java中的@Override注解是可以被继承的,它是可以在代码编译期告诉...Java的元注解 元注解就是注解的注解,听起来比较拗口,说白了就是说明注解的一些属性,比如当前注解是作用在类还是局部变量、实例变量、方法,注解的生存期、能否被子类继承、可否被文档化等等。...通过反射找到控件 以上代码有一些反射基础的同学都可以看明白,而且的写了注释,最后是页面中的代码 ?...Activity页面 在控件上面写上注释和它的ID值,在使用控件之前把上下文传递给FindViewByReflection这个类,让它通过反射来遍历所有用到了注释的变量,然后为它们赋值,也就是在运行过程中来

1.6K10
  • 脚本在安卓项目开发中的一些简单应用

    前言 在平时的项目开发过程中,除了业务逻辑的编写以外,还有一些其它的琐事需要处理,比如资源更新、单元测试、资源压缩等。...由于在app适配的过程中需要经常来回切换分辨率查看不同分辨率下的效果,重复性比较高,而且比较繁琐,所以就想到利用脚本来自动切换分辨率。...这其中可能会有问题: 1、视觉的同事输出的图片名称为了辨别很多都是用的中文,我们在拷贝到工程中的时候需要进行改名,改成我们工程中需要的英文名称; 2、当文件比较多的时候,...直接从excel复制到notepad++中的形式如下: ? 保存成批处理后可直接运行,在需要更新资源的时候,直接双击pullAllPic.bat即可。几秒钟搞定。...目前有几种压缩的方法: 方法一:到www.tinypng.com 网站上进行压缩,这种比较麻烦,需要上传到网站上,压缩后还需要下载,如果是批量下载还要解压等,而且需要网络,很可能还带有泄漏图片资源的风险

    2K20

    安卓开发过程中的RatingBar、Handler以及GPS在大型项目中的使用【Android】

    RatingBar 点击评分栏后,通过Toast显示当前分数 单击按钮获取当前分数并将其显示在TextView上 <RatingBar android:id="@+id/rb_normal...关键是在加载页面时使用onload()加载相应的js脚本。js脚本中定义的一个函数是取出传递的对象,获取其中的数据,并通过for循环以单位行的形式打印出来! 有图片和事实。...Handler 当我们的子线程想要修改活动中的UI组件时,我们可以创建一个新的Handler对象,并通过该对象向主线程发送信息;我们发送的信息将进入主线程的MessageQueue等待,Looper将按照先入先出的顺序将其取出...如果希望处理程序正常工作,则当前线程中必须有Looper对象 Message:处理程序接收并处理的消息对象 MessageQueue:消息队列。先进先出管理邮件。...安卓系统中通常有四种定位方法:GPS定位、WIFI对准、基站定位、AGPS定位(基站+GPS); 本系列教程仅解释GPS定位的基本用法!GPS用于通过与卫星的交互获得设备的当前经度和纬度。

    1.8K10

    安卓逆向:这是一篇逆向基础函数在ARM32中的刨根问底。

    栈帧有什么作用? 7. 栈帧在函数中的使用? 1. 怎样在ARM汇编中去识别和定位出函数 1.使用专门的跳转指令。...在参数传递时,将所有参数看做是存放在连续的内存单元中的字数据。...以上ARM汇编中在bx前面有再开辟完栈空间后有对应的六个ldr指令,表示这个函数有六个参数 ? 4.函数的返回值是通过怎样接收存储?...又由于LR是指向调用函数的(即PC寄存器的历史值)。那么,如果能得到每个栈帧中的LR值,就能得到整个的函数调用链。 6.栈帧的作用?...下例中栈就是用于存储保存局部变量的。 ? ? 栈用于存储返回值的 ? ? Str r0,[r7,#12]意思是将返回值R0写入到栈[r7,#12]的位置 7. 栈帧在函数中的使用?

    3.5K74

    RSSHelper正式开源

    另外,对于没有提供RSS的网页,也没有办法订阅,所以决定自己搓一个: 抓取展示RSS最新10条(包括目录摘要和post内容) 夜间模式(当时经常在晚上看) 当时会点安卓,偷懒采用安卓壳包着WebView...rsshelper_ios 二.安卓Hybrid App 把WebView作为容器,所有内容都是离线页面,没有服务,靠安卓跨域,没有持久存储(sqlite),甚至连基本的内存缓存都没有 遇到一些问题:...XML解析,用jsoup 线程通信(抓取HTML和RSS并解析的过程在子线程) 跨域,由安卓来请求,绕过去了 安卓与JS双向通信(包括JS接口注入和WebView历史栈管理) 靠这样一个很弱的玩具找到了第一份实习工作...,当时前端基础不好,除了个人网站首页(首页是自己做的,内容等都是wordpress)外,拿不出能看的项目,Java仅限于安卓玩具和SSH配出来的Hello World,这个小玩具可能是作为加分项了吧(猜测...在PHP生态没有找到更好的RSS解析方案 五.服务迁移至node 原PHP服务器无法支持HTTPS(廉价虚拟主机限制),改用HTTPS顺便用node重写,发现了生态的巨大作用: RSS解析使用feedparser

    2K50

    数据收集错误使Chrome 79 安卓版的发布陷入混乱(IT)

    该漏洞会清除某些使用安卓内置WebView应用程序中的数据,该组件在应用程序内部呈现网页。当用户登录应用程序内的网页时,或者如果默认的安卓浏览器缺少自己的内部渲染引擎,Chrome就会启动加载内容。...然而,修补代码以解决该问题仍然是工程师们面临的挑战。到目前为止,还没有保证补丁能将丢失的数据返回到受影响的安卓应用程序。 一些Android应用程序在WebView中运行。...移动设备上的2个本地存储器 安卓手机和平板电脑等移动设备依赖本地存储和WebSQL位置来提供存储机制。它们允许网站或Web应用程序将数据存储在用户Chrome配置文件目录中的用户设备上。...一些安卓应用程序开发人员更喜欢将用户数据上传到专用的数据库服务器。但是,有些网站仍然在本地使用自带储存或WebSQL。许多移动应用程序开发人员使用本地存储在移动设备上的自带储存和WebSQL。...实际上,许多安卓应用程序通常只是加载在WebView组件中的一个网站,此过程相当于Chrome的简易版。与在线的SQLite数据库相比,它是一种更简单、更紧凑的本地保存用户设置和数据的方法。

    1.8K10

    Black Hat Europe分享 | AutoSpill攻击可窃取安卓密码管理器中密码

    在Black Hat Europe大会的演讲中,来自海得拉巴国际信息技术学院(IIIT)的研究人员表示,他们发现,即使没有JavaScript注入,大多数安卓密码管理器也容易受到AutoSpill的攻击...而安卓上的密码管理器则是利用平台的WebView框架,在应用加载如苹果、脸书、微软或谷歌等服务的登录页面时,自动输入用户的账户凭证。...目前1Password已经确定了AutoSpill的修复方案,并且目前正在处理中。更新后,原生字段用于仅意图用于安卓WebView的凭证,以此提高防护能力。...Keeper在保护用户不会自动将凭证填充到未经用户明确授权的不受信任应用程序或网站上方面,已经有了安全防护措施。在安卓平台上,当尝试将凭证自动填充到安卓应用程序或网站时,Keeper会提示用户。...谷歌发言人表示,WebView被安卓开发者以多种方式使用,包括在他们的应用中托管自己服务的登录页面,这个问题与密码管理器在与WebView交互时如何利用自动填充APIs有关。

    21010

    WebView深度学习(一)之WebView的基本使用以及Android和js的交互

    前言:随着市场需求的不断变化,原生安卓已经无法满足客户的需要了,现在很多app都在使用Android和h5的交互实现某些功能,比如商品详情页,文章详情页面,商品点评页面,还有某些复杂的展示页面等等,设置登陆页面都有可能是和...通过交互可以很快速的达到效果,原生的安卓去做的话就会很麻烦。今天我就简单讲一下使用WebView做到js代码和安卓的交互,通过一个小demo教你学会js和Android的交互。...WebView详解.png 目录: 一、WebView的基本使用 二、安卓通过WebView和js交互 三、WebView的那些坑 四、WebView的内存泄漏怎么办?...:辅助 WebView 处理 Javascript 的对话框,网站图标,网站标题等等。)...()、onJsConfirm()、onJsPrompt()方法回调拦截JS对话框alert()、confirm()、prompt() 消息 1.JS中的三个常用的对话框方法介绍: 方法 作用 返回值

    6.3K31

    H5 手机 App 开发入门:技术篇

    混合技术栈:页面本身就是网页,默认在 WebView 中显示。 跨平台技术栈:提供一个 WebView 的语法,编译的时候将其换成原生的 WebView。...注意,不同系统的 WebView 控件名称不一样,安卓系统就叫 WebView,iOS 系统有较老的 UIWebView,也有较新的 WKWebView,作用都是一样的,差异在于功能的强弱。...三、原生技术栈 原生技术栈分成 iOS 和安卓两个平台。 简单说,iOS 的原生技术栈就是使用 Object-C 语言或 Swift 语言,在 Xcode 开发环境中编程。...运行代码之前,Android Studio 要求必须连接真机,或安装安卓模拟器。完成以后后,在工具栏上点击运行按钮,就可以运行代码查看效果了。 ? ?...上面代码中,React Native 自身的WebView控件,编译时会分别转为 iOS 和安卓的原生 WebView 控件。 接下来,预览页面效果。

    6.9K41

    酷炫实现WebView与Native完美融合

    实现步骤 1.web页面设置透明(opacity) 2.安卓webview控件设置透明 3.阻止跳转自带浏览器 4.优化:web页面缓存以及定时缓存清理 1.web页面设置透明...http://blog.csdn.net/github_33304260/article/details/71779983">Android自定义View【实战教程】5⃣️---Canvas详解及代码绘制安卓机器人...2.安卓webview控件设置透明 非常简单,两行代码: webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); webView.setBackgroundColor...3.阻止跳转自带浏览器 通过上面两个步骤我们已经可以实现我们开始看到的那个效果啦,不过这时候还是会出现问题,那就加载某些页面的时候会跳转到系统自带的浏览器,那么我们接下来解决这个问题。...3.LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式 4.LOAD_NO_CACHE: 不使用缓存,只从网络获取数据

    1K20

    Android与js互相调用

    Android与js互相调用 有话要说 本篇主要总结了简单的Android与js互相调用的方法。 在开发过程中遇到了需要在安卓中调用js方法的需求,于是将具体的实现过程总结成这篇博客。...效果 其中“调用安卓方法”按钮是html中的按钮;“调用JS方法”按钮是app中的按钮。...js方法 可以看到,在本地html中已经有了一个test函数,下面来在安卓中调用这个test函数。...>调用安卓方法 这样就实现了在js中调用安卓方法。 总结 由于工作繁忙,好久没写博客了。 以后会抽出时间多多总结自己在工作中所学习的内容的。...这篇博客写了一个很简单的一个demo,但是安卓和js互相调用在实际开发中很有用,特地做一个总结。

    5.5K40

    H5如何与原生App通信?

    Android容器 在安卓客户端中,webView容器与手机自带的浏览器内核一致,多为android-chrome。不存在兼容性和性能问题。...RN容器 在react-native开发中,从rn 0.37版本开始官方引入了组件,在安卓中调用原生浏览器,在IOS中默认调用的是UIWebView容器。...H5调用Android客户端方法 在安卓webView中有三种调用native的方式: 通过schema方式,客户端使用shouldOverrideUrlLoading方法对url请求协议进行解析。...Android客户端调用H5方法 在安卓APP中,客户端通过webview的loadUrl进行调用: // android JAVA code webView.loadUrl("javascript:...在了解了js与客户端底层的通信原理后,我们可以将IOS、安卓统一封装成jsBridge提供给业务层开发调用。

    6.1K20

    安卓Native和H5页面进行交互

    安卓Native和H5页面进行交互 1、H5页面调用安卓Native界面 1)通过给webView添加JsInterface,安卓提供接口,让H5来进行调用         a)安卓写一个类,里面的方法需要用通过注解来表明是...,并取别名           webView.addJavascriptInterface(new WebInterface(), "robot");     至此,安卓的配置完成了。       ...下面配置HTML页面       在代码中添加下面的代码,如果加载了页面了,就会调用起别名叫robot这个接口类里面的js接口方法              安卓通过url跳转时的改变,来进行不同的操作 当webview加载的页面出现变化的时候,可以进行不同的操作,例如访问站外的网址,或者黑名单的网址进行提示     eg: wb.setWebViewClient...因为js脚本需要完全加载到页面中才可以调用到,否则没有任何效果

    2.2K10

    Google Play商店漏洞:黑客可远程在你的安卓手机上安装恶意APP

    安全研究人员发现Google Play商店中两个严重安全漏洞,可以允许攻击者远程在用户的安卓设备上安装并下载恶意APP(应用)。...Metasploit框架的技术领导Tod Beardsley在Rapid7上提醒说: 一个X-Frame-Options(XFO)漏洞结合一个最近的安卓WebView(Jelly Bean)漏洞,就可以创造出一种新的攻击方式...受影响的用户 该漏洞影响安卓4.3 Jelly Bean及之前所有未接收过针对WebView的官方更新的版本,同样的,安装第三方浏览器的用户同样受到影响。...此外,在这个月初,一个通用型跨站脚本漏洞被发现存在于所有最新版本的IE浏览器中(查看更多),该漏洞允许黑客向用户网站中注入恶意代码,并盗取cookies、会话和登录凭证。...根据报告所说,通过利用影响安卓设备的两个漏洞,就可以实现远程代码执行操作。 首先,该模块利用一个存在于安卓开源stock浏览器(AOSP浏览器)和其他浏览器(4.4版本之前)中的通用型跨站脚本漏洞。

    1.9K70

    如何用Sonic云真机打王者

    具体做法如下:1、调用安卓内部的 android.hardware.input.InputManager2、因为安卓 10 以上是 minitouch 被禁用了/dev/device/input 权限,...但是安卓的触控经过调用API的方式,实时监听鼠标移动轨迹来发送指令给手机,所以触控体验会更佳、更流畅。但是iOS的话,这种方式在webdriveragent里面很不好实现,目前也在探索之中。...在本版本,iOS的支持只有投屏跟控件获取,这是我的一次尝试,看看Sonic在用户里面的兼容性达到什么水平,最后在用户的反馈中,我决定v1.3.0-beta1中加入:5.iOS自动化与在线调试6.siri...命令7.iOS远程装包功能逐渐往安卓模块靠齐,后面也会将iOS版的在线webview一起做了。...iosDriver.setSetting(Setting.MJPEG_SERVER_FRAMERATE, 30);所以说,用iOS打王者,体验就没安卓那么好咯~在某些用户反馈,机器长时间插着usb充电容易造成鼓包等等安全问题

    1.7K20

    Android Q Beta 6 终极测试版发布!

    平台更新 已删除用于禁用后台活动启动的开发人员选项 Android 平台已知问题 设置 在某些情况下,“设置”会在搜索结果中显示“空”文本 WebView 某些 WebView 应用程序无法正常运行...Google 应用已知问题 在 Play 商店中撰写评论时屏幕会闪烁 启用黑暗模式时,Google 搜索仍然是白色文本/白色背景 谷歌翻译不起作用 [Chrome] 视频损坏 Google Play 商店会在首次启动应用时显示更新对话框...在正式发布前,Android Q推送最后一个测试版本beta 6 不过谷歌确实表示,Beta 6 中改善了后退手势的灵敏度偏好,并为其添加了 200dp 的垂直应用排阻极限。...如果没有接收到推送,请先确认您已报名参加 Android Q 的测试。 至于运行 Android Q 的第三方设备,当然是性能越好越给力。相信大家手中都有一台属于自己的测试机或者安卓手机吧。...2019年,开发语言新姿势汇总 谷歌的Android Q到底有哪些新特性及变更? 华为鸿蒙OS发布!方舟支持混合编译,终将可替换安卓?

    1.5K20

    WebView与js交互

    PS:大家都知道现在一个安卓项目里面有一些比较悬的画面,比如说一个炫酷的导航页,或者抽奖大转盘等,这些可以用安卓自身的知识来实现,也可以用JS来实现这些动画,然后安卓直接拿来用,这期间也是免不了有一些交互...,今天这篇文章就是让大家知道,怎么使用安卓与html联动,并且实现交互,这就用到了webview,webview可以嵌入很多页面,比如说webview.loadUrl("http://www.baidu.com...而且webview还可以实现网页回退,但是问题来了,在引进来的网页我们怎么控制呢,你点击百度是百度页面所发生的变化,都是百度页面本身的功能,接下里,咱们就看看怎么在安卓Activity中写控制html变化的方法...}); 到了这里webView的配置基本上就做好了,因为例子比较简单,就配置这么多够用了 3:html创建 在Project模式,main目录下,和java文件同级创建assets目录...("javascript:myfun()"); } }); } 点击屏幕就可以切换了,切换方法在html中写好了。

    14.1K70
    领券