Android中WebView使用loadurl加载过长js文件失效 10C

最近在公司项目中遇到Android与H5交互的问题,使用的是BridgeWebView
在使用中,回调方法function.onCallBack(data)
data为原生向后台请求返回的Json格式的字符串
一直使用都是正常的,但是有一次data返回了大量数据,字符串长度为23000左右
这时,回调就没有响应了,H5页面没有加载出相关的数据
查看BridgeWebView源码时发现,将接收到的data数据重新拼接成js文件字符串javascriptCommand(javascriptCommand字符串长度为30000左右),使用loadurl(javascriptCommand),在网上查找资料,可能的原因为安卓4.4以后使用evaluateJavascript(javascriptCommand),但是尝试修改之后还是没法正常显示数据。不知道怎么修改才能让H5正常显示出Android这边回调的数据。
IOS和H5原生调用都能正常显示,只有Android这边有问题,急急急

2

2个回答

原生要传递2.5M左右的文本数据给H5前端数据量大概3500个条目,这时显示不出来。传递1.5M左右1500个条目可以显示出来

0

这是因为 webview 的版本太高了造成的,偷懒的解决办法就是降低版本,还有就是使用4.4以上版本的evaluateJavaScript方法来加载。

 public void evaluateJavaScript(String script, ValueCallback<String> resultCallback) {
   checkThread();
     mAwContents.evaluateJavaScript(script, resultCallback);
}
-1
u012072188
ff很爱很爱你 回复qq_35236327: 哥们,你现在解决这个问题了吗,我也碰到了同样的问题,不知道怎么解决好,非常感谢。
12 个月之前 回复
qq_35236327
qq_35236327 感谢你的回答,但是我在上面说过了,在4.4以上的版本中我使用了evaluateJavaScript方法来加载,但是还是没有数据显示,并没有解决问题
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
webview4.4以上版本使用loadurl加载过长js文件失效问题
因为业务需要, 需要在使用Webview的时候,动态的加载js文件到页面中,之前SDK Target版本为16 , 无论JS文件多大,使用一切正常~ 近期将target版本改为了19 ,发现存在js过大的时候,使用4.4以上版本执行项目,JS文件不执行。 查看源码发现在4.4版本以上内核对处理js做了区别处理: 495 @Override 496 public void lo
webview.loadurl应在主线程
webview调用js接口在荣耀畅玩3x(Android 4.2)起作用,在其他4.2以上手机中不起作用的问题 由于我load js接口是在js调用android方法中(带有 @JavascriptInterface注解的Java函),原因分析: webview.loadur js接口不在主线程 验证得知@JavascriptInterface注解的Java函数运行在子线程最后使用handler异步
调用 WebView 的 loadUrl 加载页面后 Javascript 脚本不执行
调用 WebView 的 loadUrl 加载页面后 Javascript 脚本正常(location.href 指向的链接可跳转),点链接后在 WebViewClient 的 shouldOverrideUrlLoading 方法中对 URL 分析,并开启新 Activity 处理 URL 中包含的信息,关闭新 Activity 再返回 WebView 所在 Activity ,Javasc
android WebView中loadUrl方法显示本地html中的图文
使用mWebView.loadUrl("file:///android_asset/index.html");时只能显示html文件内的文字,无法显示图片,就是包含图文的html文件,只显示文字如下图,怎么才能显示图文,是不是设置或者权限的问题?
解决WebView使用loadUrl回调javascript方法时报错的问题
如果在Android中有如下方法定义: @JavascriptInterface public void inferenceImage() {   webView.loadUrl(&quot;javascript:recognitionResult()&quot;); } 当该方法被javascript函数调用,而该方法中又回调了另一个javascript函数,此时可能会报错,错误信息如下: W/System.err...
Android WebView注入js中带有URL-encode字符时报错问题
在hybird-APP开发中,经常会用到的WebView.loadUrl("javascript:+js")的方式来向webview注入js。 在最近的项目中发现注入的js中带有部分已经经过Url encode过字符时,在某些机型上会注入的js运行会失败。 经过上网查找后发现在android4.4以上的版本,WebView.loadUrl会对的js进行一次url decode后再运行,故注入会
Andorid开发之进程后台被kill后恢复与webView.loadUrl拼接参数注意事项
最近在做项目开发的时候,遇到两个比较难解的bug,最终发现是因为在写代码的时候情况考虑不全,特此记录: 1,Android应用在后台被kill,然后重新打开应用,由于不是用户手动kill或者退出,系统会为用户恢复状态,但是这时候只会调用MainActivity的onCreate方法,如果有些操作是在launch页中处理的话,这种情况就不能将所有的处理逻辑执行完毕,肯能导致出现很难复现的bug。
在应用中利用webview加载网页引起的内存高消耗
android在应用中加载网页需要用到webview ,而webview需要加载在activity中显示,即webview要将显示内容绘制到activity上,由于为了避免webview对内存的消耗,一般在应用中需要动态加载,而不能再xml中显示的静态加载。     webView = new MeetingWebView(this); RelativeL
android浏览器研究-loadUrl加载流程
文主要对browser 的java部分代码一个简单说明,主线基本上围绕着第一次打开 browser加载网页的流程展开, 同时顺便提了下App层几个主要类的关系。以便大家可以更快了解 browser的上层代码,然后腾出时间去关注 webkit部分代码。webkit部分代码可非常多哦。首先根据logcat 的日志信息或 brower应用的Androidmanifest.xml, 打开browser 第
关于安卓webview的loadUrl和reload方法缓存策略的区别发现记录
现象记录: loadUrl是会带上Etag,走浏览器的缓存策略 reloadurl是不会带上Etag,不会走浏览器的缓存策略
WebView调用JS失败问题总结
背景说明 最近在项目里需要在WebView调用JS方法,遇到了一些坑,在此记录下来。方便以后查找回顾。 一般来说,如果需要在WebView调用JS方法,只需要进行以下几步: 1、设置WebView支持JS webSettings.setJavaScriptEnabled(true); 2、加载html文件/url webView.loadUrl(&quot;file:///android_a...
WebView调用loadUrl时候带上cookie信息
今天分享一个小方法~ 项目中有一个界面是一个纯webview,为了让这个界面在发布后也可以随时修改样式,当时就没有选择传统的android xml的布局界面,而是选择跳转到一个html界面。但是这个html也不是一个静态页面,他的界面会根据用户不同的等级做出相应的改变。那么这时候,就需要传参数,将用户的信息塞到这个http的请求中。 /* 让webviewloadurl的时候带上cookie信
彻底解决WebView加载html乱码问题
1.webView.loadData乱码参看"webView.loadData中文乱码问题“ 2.webview.loadUrl("http://www.xxx.com")和WebView.loadUrl("file:///android_asset/knowledge/memory.html")加载本地html文件乱码; 解决方法: 1.设置html头文件为utf-8;       这
EasyJSWebView二次加载无效的解决方案
JS和OC交互有好几种方法,这种引用EasyJSWebView第三方的,是和安卓最像的,调用的JS也是一样的,避免H5开发的写两次JS了 但是,有问题,再次加载的时候,点击页面,EasyJSWebView的代理方法不走了。这个第三方里面的代理还拿不出,so我想了一个本办法,就是在webview加载的时候,把旧的webview去掉,重新铺一个新的上代码@property (nonatomic, st
JsBridge最详细的解析,高版本webview的evaluateJavascript
android jsbridge原理详解,并加入API19以上版本的调用方法
Android中WebView加载H5页面JS不执行的问题
今天在使用WebView加载H5网页是,网页自身的JS并没有执行,后来加上下面几句就可以执行了,所以记录下: 首先WebView必须支持JS的执行 WebSettings webSettings = webview.getSettings(); //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
android webview处理加载超时
http://www.androidlearner.net/android-webview-loadurl-timeout.html .......... private long timeout = 15000; private WebView mWebView; private Timer timer; Handler mHandler = new Handler(){ @Overr
android webview js不执行原因解析
前言 在开发混合app的时候经常会使用webview来加载html,并且还要与js 交互。 下面会介绍一些导致js 不执行的原因 原因 浏览器未开启javascript 使用的js代码有问题,webview不兼容该代码。 1) 第一个坎:WebSettings      WebSettings webSettings = mWebView.getSettings();
Webview加载 URL 失败的原因分析和解决办法
在使用webview加载URL失败的情况,检查其他地方有没有调用webview的pauseTimers 方法public void pauseTimers () 此方法不仅仅针对当前的webview而是全局的全应用程序的webview,它会暂停所有webview的layout,parsing,javascripttimer。降低CPU功耗。解决方法 在需要调用webview加载的时候添加下面的方法p
如何解决Android WebView出现的乱码问题
http://blog.sina.com.cn/s/blog_5da93c8f01011azl.html 使用webView载入网页,主要有三种方法: 1、webView.loadUrl(); 直接显示网页内容(单独显示网络图片),一般不会出现乱码。 2、webView.loadData(data, "text/html", "UTF-8"); loadData主要被设计用来装载URI格
关于安卓真机测试时无法加载网页的问题
安卓程序在真机上测试时可以加载附带的本地网页,但是无法加载百度等网页。检查了一下自己的网络,发现并没有问题。后来才发现是权限的问题。在AndroidManifest.xml中加入以下代码即可     &amp;lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&amp;gt;     &amp;lt;uses-permission androi...
【Android】WebView加载html与JS交互
文章目录一、加载Html的几种方法二、加载页面时几种简单API使用三、浏览器优化操作处理:四、WebView与JS交互问题解决:HTML5交互:HTML5地理位置服务在Android中的应用:构建HTML5离线应用:在线状态检测Android与JS之间的互相调用在Android中调用JS的方法:Android中处理JS的警告,对话框等Android中的调试: 一、加载Html的几种方法 直接在...
Cordova使用SystemWebView加载服务器网址
加载服务器端的网址可以使用2中方式。 第一种继承CordivaActivity类,然后直接使用loadUrl(launchUrl)即可。这里的launchUrl指向config.xml里面的,此时的index.html是我们项目本地www文件夹下的网址,只需要替换成服务器上的地址即可。例如改成<content src= "http://www.baidu.com"/>,就可以直接打开百度的网
webView 加载的url时,文字出现乱码解决办法
原因:因为url中的内容需要UTF-8解码 方法1: NSURL* url =[NSURL URLWithString:@&quot;http://xxx&quot;]; NSData *data = [NSData dataWithContentsOfURL:url]; [self.webView loadData:data MIMEType:@&quot;text/html&quot; textEncodingName:@&quot;...
loadUrl调用js函数 传它的参数的注意事项
当把html内容通过webView.loadUrl("javascript:displayHtml("htmlContent"); 的方式传递给 js去执行的时候  一定要注意 htmlContent 中的引号一定要被转义! 转义方式 webView().loadUrl("javascript:displayHtml(\""+htmlContent.replaceAll("\"", "
【Webview相关问题】"控制字符"引发的惨案及Base64
问题描述webview.loadurl 去执行一段js语句来回调前端方法来回传数据,但是发现偶尔出现没有回调的情况,参照物 将该语句在前端环境中执行完美通过。 iOS执行该操作也是正常的。 掌握了一定规律后发现,在包含某个车次信息的时候,回调就会失败,然后使用二分法的方式最后查找到是在一段加密的数据中包含了%0a这么个控制字符。查找到解决这个问题花费了不少时间,所以有必要好好的总结一下控制字符的干扰
Android WebView使用全面解析(加载网络资源、本地HTML,JS交互)
简述:     WebView是什么?有什么用途?我们先来看一下官方介绍:      A View that displays web pages. This class is the basis upon which you can roll your own web browser or simply display some online content within your Ac
Android 显示 WebView ,加载URL 时,向webview的 header 里面传递参数
1、主要布局  xml version="1.0" encoding="utf-8"?> RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width
android webView调用js函数的几种方法
最近在研究webView与js的交互,发现一共有两种方式,一种是直接调用网页中的js函数,这种是网页端写好的js函数。另一种是加载本地写好的js文件,将内容注入到网页内,然后在调用。
Android 使用webview浏览js文件/网页
首先,说明一下webview在ios上是可以很方便的直接预览pdf文件的,但是Android上的webview需要使用谷歌文档服务。如下: mWebView.loadUrl(&quot;http://docs.google.com/gviewembedded=true&amp;amp;url=&quot; + pdfUrl); 这种方式国内网络环境是不用考虑的。(你懂得) 那么下面我要介绍其他的方法了。 一、...
9、webview传参交互
1、webview加载url加入header Map&amp;lt;String, String&amp;gt; map = new HashMap&amp;lt;String, String&amp;gt;(); map.put(&quot;assetionkey&quot;, StringUtils.getBase64(RetrofitHelper.key + timeString)); map.put(&quot;timestamp&quot;, timeSt...
cordova工程webview注入本地js库的方法
在使用cordova(webview)的Android工程里,需要加载远程的h5页面,为了减少流量的消耗,同时也为了提高h5的加载速度, 我们可以把h5页面用到的js库,通过本地注入,替代从网络上加载。
BridgeWebView的简单使用,自动调用js的代码
之前公司在写混合式Android开发,刚摸索出来js+webview的使用,老大说js原生的安全性不高,建议我用BridgeWebView+BridgeWebViewjs,这是我自己一些示例代码,我自己是ok的,被这个BridgeWebView的BridgeWebViewClient坑了 package com.baoyuan.fragment.Second.Property; i
Android Webview加载网页时发送HTTP头信息
Android Webview加载网页时发送HTTP头信息 JUL 12TH, 2014 原文链接:http://droidyue.com/blog/2014/07/12/load-url-with-extra-header-in-android-webview-chinese-edition/ 当你点击一个超链接进行跳转时,WebView会自动将当前地址作为Refere
记Android webView加载html代码 不执行js方法的情况
页面中有一个webView显示后台返回的富文本数据,富文本数据是一串html代码,但是并没有&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;这些标签,webView不做任何处理,使用 webView.loadData(html, &quot;text/html; charset=UTF-8&quot;, &quot;utf-8&quot;) webView可以显示 但是后来需要将富文本的字体变大3倍,采用Js来实现 js代码如...
webview如何打开assets和/data/data/pkg目录下的html文件
打开本包内assets目录下的index.html文件 webview.loadUrl(“file:///android_assets/index.html”);打开本包内/data/data/pkg目录下的index.html文件 webview.loadUrl(“file:”+getFilesDir()+File.separator+”index.html”);打开本包内SD卡目录下的i
webview加载网页和assets的html文件
效果 代码 package com.fe.statuslayout; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import
WebView 重定向行为导致的多次加载问题
使用 WebView 时,我们通常会重写以下方法: shouldOverrideUrlLoading() onPageStarted() onPageFinished()WebView 内部点击连接,他们的回调顺序是这样的:1、如果是固定的地址:shouldOverrideUrlLoading() -> onPageStarted()-> onPageFinished()shouldO
Android与WebView的同步和异步访问机制
WebChromeClient和WebViewClient是WebView应用中的两个最重要的类。 通过这两个类,WebView能够捕获到Html页面中url的加载,javascript的执行等的所有操作,从而能够在Android的原生环境中对这些来自网页上的事件进行判断,解析,然后将对应的处理结果返回给html网页。 这两个类是html页面和Android原生环境交互的基础,所有通过html页面来跟后台交互的操作,都在这两个类里面实现,在后面我们还会详细说明。 2.4)mWebView.addJavasc
Android读取assets目录下的资源 (webview加载assets下的html)
1。获取资源的输入流 资源文件 sample.txt 位于 $PROJECT_HOME/assets/ 目录下,可以在 Activity 中通过 Context.getAssets().open(“sample.txt”) 方法获取输入流。 注意:如果资源文件是文本文件则需要考虑文件的编码和换行符。建议使用UTF-8和Unix换行符。 2. WebView 加载a
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 js游戏开发视频 js微信开发教程