javascript - Android WebView 在加载 html 之前注入(inject) Javascript

标签 javascript android webview

我正在使用 Android WebView 加载一些网页。我需要在所有页面加载之前插入一段 Javascript 代码。

我正在尝试在 WebViewClient onPageStart 回调中注入(inject)它们。

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient(){

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        loadUrl("javascript:var output='test string';");
        }
})

mWebView.loadUrl("xxx.html");

HTML代码:

<html>
<script>document.write(output);</script>
</html>

我希望我的 Js 代码在 HTML 之前加载。但有时 JS 代码在 HTML 之后加载。

有什么办法可以解决我的问题吗?

最佳答案

我遇到了同样的问题,我已经解决了。我在加载前隐藏 WebView 并在页面加载后显示。

webView.getSettings().setJavaScriptEnabled(true);
b.webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            b.webView.evaluateJavascript("javascript:window.document.getElementsByTagName('body')[0].style.color='white';", null);
        }
        else
        {
            b.webView.loadUrl("javascript:window.document.getElementsByTagName('body')[0].style.color='white';");
        }
        b.webView.setVisibility(View.VISIBLE);
    }

});

b.webView.setVisibility(View.INVISIBLE);
b.webView.loadUrl(PreferenceHelper.EULA_URL);

关于javascript - Android WebView 在加载 html 之前注入(inject) Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14064589/

相关文章:

java - 删除我的 json 字符串中添加的转义字符

css - 在 html 页面的容器中打开网站

javascript - jQuery 在页面加载时,执行像单击功能一样?

javascript - 从 ASP.NET 背后的代码调用 Javascript 函数

javascript - AngularJS 禁用 ng-repeat 中未选中的复选框

javascript - 使用 stringByEvaluatingJavaScriptFromString document.getElementsByClassName 从 UIWebView 获取数据

android - 如何在 PhoneGap 应用程序启动时启动 Android Activity ?

javascript - 在 Angular 组件中创建 Angular 服务时,如何为其设置自定义构造函数参数?

Java IncationHandler 和 Singleton

android - 我为免费和高级应用程序使用哪些软件包?