Android的WebView.loadUrl方法中,URL的长度是否有限制?

4
我希望能够将本地资源传输到从远程服务器加载的页面中。
我想要做类似于这样的事情:
webView.loadUrl('http://my.server.com/page.html');
webView.loadUrl('javascript:function someLong(){}function codeHere(){}....');

这是为了节省带宽和减少加载时间。

据我所见,资产文件无法从远程网页加载...

3个回答

4

看起来没有限制,或者限制非常大。我已经用简单的代码做了一些测试。

webView.loadUrl(
    "javascript:function a(s){alert(s.length + ' ' + s.substring(s.length-5))}");
String repeated = 
    String.format(String.format("%%0%dd", 80000), 0).replace("0", ".") + "xx";
webView.loadUrl("javascript:a('"+repeated+"')");

第一行:定义一个函数,第二行:准备长字符串,第三行:使用非常长的字符串参数调用已定义的函数。

它完美地工作。结果我看到了JS警报,上面写着:“80002 ...xx”


1

正如您可以在这里阅读到的那样,webView.loadUrl("javascript:wave()");只是调用JS方法,而不是将它们注入到HTML页面中。也许您想使用webView.loadData()webView.loadDataWithBaseURL()方法?还是我误解了您的意思?


好的,我会尽力让我的问题更清晰... 我有一个远程页面。这个页面有JS代码。其中一些代码是我的,我想将这些代码保留在Android端。有些代码不是我的,它是从网络加载数据(图像、附加JS代码)的某些服务。我想通过将我的代码放到Android端来减少带宽使用,并避免通过网络下载它。由于我有远程代码与远程服务器交互,所以我不能使用webView.loadData()方法,也不能使用file:///android_asset/。作为一种解决方法,我想通过LoadUrl("javascript:...")调用“传输”我的源代码。 - Olegas

-1

默认情况下,loadURL会发出一个GET请求,其限制为254个字符。这就是问题所在。


我认为你在GET请求限制数量上是错误的。据我所知,GET请求被限制在2048个字节。目前还没有问题,我通过loadUrl传输了大约2100个字节...但这并不意味着没有限制。 - Olegas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接