从WebView onPageFinished运行Javascript不起作用

时间:2016-06-23 19:22:12

标签: javascript android android-webview webviewclient

我无法在WebViewClient的onPageFinished()方法中成功运行某些javascript。

我正在移植iOS应用程序,他们正在做同样的事情,等待页面加载,然后使用Javascript来隐藏一些HTML项目。

我没有多少使用Javascript,但我不确定为什么它一直无法正常工作。现在发生的事情是页面加载,然后调用onPageFinished,页面重新加载,文本“没有”'显示在左上角。

我已经附加了我的WebViewClient,然后是我在onCreate中所做的所有WebView设置。我还包括了一些我之前尝试过的注释代码,但代码也没有用。

    // Manages the behavior when URLs are loaded
private class Browser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url, headers);
        return true;
    }

    @JavascriptInterface
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        //view.loadUrl("javascript:document.getElementById('navbar_bg').style.display = 'none';");
        //webView.loadUrl("javascript:document.getElementById(\"content\")");
        view.loadUrl("javascript:document.getElementById(\"navbar_bg\").style.display=\"none\";");

    }
}


    @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mobile_homework);
    ButterKnife.bind(this);

    homeworkId = getIntent().getIntExtra(HOMEWORK_ID_EXTRA, 0);

    // Configure related browser settings
    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);

    // Enable responsive layout
    webView.getSettings().setUseWideViewPort(true);

    // Zoom out if the content width is greater than the width of the viewport
    webView.getSettings().setLoadWithOverviewMode(true);

    //allow manual zoom and get rid of pinch to zoom
    webView.getSettings().setSupportZoom(true);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setDisplayZoomControls(false);

    // Configure the client to use when opening URLs
    webView.setWebViewClient(new Browser());
}

编辑:最后的修复是为每个更改设置变量,因为它在您更改任何项目时返回变量。

最终工作代码如下:

            view.loadUrl("javascript:var header = document.getElementById('header_bg_first').style.display='none'; " +
                "var navbar = document.getElementById('navbar_bg').style.display='none'; " +
                "var footer = document.getElementById('footer').style.display='none'; " +
                "var iframePadding = document.getElementById('flcn_assignment').style.paddingRight='10px';");

0 个答案:

没有答案