资产是否从任何网页或仅本地资产网页访问工作



我正在尝试将脚本添加到托管在 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

我使用自己的 url 方案加载了这些相同的文件,所以我知道它们工作得很好。我还有其他方法可以加载它们,但我想尝试一下file:///android_asset/的东西。这难道不是正确的做法吗?

谢谢。

不可以,不允许远程内容加载本地内容。

您可以通过将 Java 端应用程序中的本地 JS 加载到字符串中,并直接注入该字符串(使用相同的 javascript: URL 方法)来实现相同的效果。

最新更新