Как прослушать страницу перед загрузкой или выгрузкой события в android веб-просмотре JavaScript - PullRequest
0 голосов
/ 03 марта 2020

Я использую WebView для загрузки своей страницы ниже:

<html>
    <head>

    </head>
    <body>
        <h1>first page</h1>
        <script>
            (function(){
                function log(e){
                    console.log("Page is going to unload:"+e);
                }
                window.addEventListener('beforeunload',log);
                window.addEventListener('unload',log);
            })()
        </script>
    </body>
</html>

эта страница хорошо работала в Chrome или другом браузере P C。

Вот код в действии:

public class MainActivity extends AppCompatActivity {
    WebView web;
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        web = findViewById(R.id.web);
        web.setWebContentsDebuggingEnabled(true);
        WebSettings webSettings = web.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);

        web.loadUrl("http://192.168.0.103:5000/WebContent/");

    }

    @Override
    protected void onPause() {
        super.onPause();
    }

    @Override
    protected void onDestroy() {
        Log.i("SSSS","acitvity destroyed");
        super.onDestroy();
        ConstraintLayout layout = this.findViewById(R.id.rootView);
        layout.removeView(web);
        web.destroy();
        web = null;
    }

}

при выходе из действия, содержащего WebView , Я не могу отследить какие-либо журналы о событии выгрузки страницы , что-то не так?

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Это потому, что вы удаляете представление и веб-просмотр в onDestroy

@Override
    protected void onDestroy() {
        Log.i("SSSS","acitvity destroyed");
        super.onDestroy();
        ConstraintLayout layout = this.findViewById(R.id.rootView);
        layout.removeView(web);   <----- This linse
        web.destroy(); <------ Forcing webview to destroy and next explicitly set null
        web = null;
    }
0 голосов
/ 03 марта 2020

Я не проверял это, но на основании документации вам нужно переопределить WebChromeClient :: onConsoleMessage и использовать WebView :: setWebChromeClient .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...