我正在尝试将脚本添加到www.example.com上托管的现有网页。所以我打电话给:
webView.loadUrl("http://www.example.com");
我也在更改以下设置:
settings.setJavaScriptEnabled(true);
settings.setSupportZoom(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setBuiltInZoomControls(true);
settings.setSupportMultipleWindows(true);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
settings.setDomStorageEnabled(true);
settings.setAllowContentAccess(true);
settings.setAllowFileAccess(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
settings.setAllowUniversalAccessFromFileURLs(true);
settings.setAllowFileAccessFromFileURLs(true);
}
然后在onPageStarted
事件中,我尝试以这种方式注入一些javascript:
webView.loadUrl("javascript:var script1 = document.createElement( 'script' );" +
"script1.type = 'text/javascript';script1.src = 'file:///android_asset/firstfunction.js';" +
" document.documentElement.appendChild(script1);");
当我这样做时,我收到以下错误:
E/Web Console﹕ Not allowed to load local resource: file:///android_asset/firstfunction.js at null:0
我使用自己的网址方案加载了这些相同的文件,所以我知道它们工作得很好。我还有其他方法可以加载它们,但我想尝试file:///android_asset/
的东西。这不是正确的方法吗?
感谢。
答案 0 :(得分:0)
不,不允许远程内容加载本地内容。
您可以通过将Java端的应用程序中的本地JS加载到String中并直接注入该String(使用相同的javascript:
URL方法)来实现相同的效果。