Запуск Javascript из WebView onPageFinished не работает

Я не могу заставить javascript успешно работать в методе onPageFinished() моего WebViewClient.

Я переношу приложение iOS, и они делают то же самое, ожидая загрузки страницы, а затем используя Javascript, чтобы скрыть некоторые элементы HTML.

Я не очень часто использую Javascript, но не знаю, почему он не работает правильно. Прямо сейчас происходит загрузка страницы, затем вызывается onPageFinished, и страница перезагружается, а в верхнем левом углу появляется текст «none».

Я прикрепил свой WebViewClient, а затем все настройки WebView, которые я делаю в onCreate. Я также включил некоторый закомментированный код того, что я пробовал раньше, и этот код также не работал.

    // 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';");

person SamIAmHarris    schedule 23.06.2016    source источник
comment
Возможно, это может помочь stackoverflow.com/questions/25602117/   -  person Federico Martinez    schedule 23.06.2016
comment
Это исправило. Сейчас я пытаюсь скрыть/отредактировать несколько элементов и опубликую, работает ли это более чем на одном элементе.   -  person SamIAmHarris    schedule 23.06.2016
comment
Да, это сработало на нескольких предметах. Спасибо за помощь, это спасло меня.   -  person SamIAmHarris    schedule 24.06.2016