使用android中的webview将javascript文件注入我的网站

使用android中的webview将javascript文件注入我的网站,第1张

概述我想将javascript文件注入我的网站.我的网站是一个简单的html页面,在服务器上.我已经注入了css文件.(withManish’shelp)所以我现在可以使用CSS管理我的简单html网站.但我也想用javascript来管理它.我的jscript.js文件位于资产文件夹中.我想在我的网站上完全访问javascript.(

我想将javascript文件注入我的网站.我的网站是一个简单的HTML页面,在服务器上.我已经注入了CSS文件. (with Manish’s help)

所以我现在可以使用CSS管理我的简单HTML网站.但我也想用JavaScript来管理它.我的Jscript.Js文件位于资产文件夹中.我想在我的网站上完全访问JavaScript. (请记住,这是我的网站).请为我写正确的代码. Thankx.

这是我的MainActivity.java文件:

package com.example.z5070.myapplication;import androID.support.v7.app.ActionBaractivity;import androID.os.Bundle;import androID.util.Base64;import androID.vIEw.Menu;import androID.vIEw.MenuItem;import androID.webkit.WebSettings;import androID.webkit.WebVIEw;import androID.webkit.WebVIEwClIEnt;import java.io.inputStream;public class MainActivity extends ActionBaractivity {        WebVIEw webVIEw;        @OverrIDe        protected voID onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentVIEw(R.layout.activity_main);            webVIEw = new WebVIEw(this);            setContentVIEw(webVIEw);            webVIEw.getSettings().setJavaScriptEnabled(true);            webVIEw.setWebVIEwClIEnt(new WebVIEwClIEnt() {                @OverrIDe                public voID onPageFinished(WebVIEw vIEw, String url) {                    injectCSS();                    super.onPageFinished(vIEw, url);                }            });            webVIEw.loadUrl("http://www.example.com/");        }        private voID injectCSS() {            try {                inputStream inputStream = getAssets().open("style.CSS");                byte[] buffer = new byte[inputStream.available()];                inputStream.read(buffer);                inputStream.close();                String encoded = Base64.encodetoString(buffer, Base64.NO_WRAP);                webVIEw.loadUrl("JavaScript:(function() {" +                        "var parent = document.getElementsByTagname('head').item(0);" +                        "var style = document.createElement('style');" +                        "style.type = 'text/CSS';" +                        "style.INNERHTML = window.atob('" + encoded + "');" +                        "parent.appendChild(style)" +                        "})()");            } catch (Exception e) {                e.printstacktrace();            }        }        @OverrIDe        public boolean onCreateOptionsMenu(Menu menu) {            getMenuInflater().inflate(R.menu.menu_main, menu);            return true;        }        @OverrIDe        public boolean onoptionsItemSelected(MenuItem item) {            int ID = item.getItemID();            if (ID == R.ID.action_settings) {                return true;            }            return super.onoptionsItemSelected(item);        }        }

解决方法:

添加一个新方法来注入JavaScript文件.

 private voID injectJs() {        try {            inputStream inputStream = getAssets().open("Jscript.Js");            byte[] buffer = new byte[inputStream.available()];            inputStream.read(buffer);            inputStream.close();            String encoded = Base64.encodetoString(buffer, Base64.NO_WRAP);            webVIEw.loadUrl("JavaScript:(function() {" +                    "var parent = document.getElementsByTagname('head').item(0);" +                    "var script = document.createElement('script');" +                    "script.type = 'text/JavaScript';" +                    "script.INNERHTML = window.atob('" + encoded + "');" +                    "parent.appendChild(script)" +                    "})()");        } catch (Exception e) {            e.printstacktrace();        }    }

在页面加载完成后调用两种方法:injectCSS()和injectJs().

webVIEw.setWebVIEwClIEnt(new WebVIEwClIEnt() {            @OverrIDe            public voID onPageFinished(WebVIEw vIEw, String url) {                injectCSS();                injectJs();                super.onPageFinished(vIEw, url);            }        });

我希望这能解决问题.

警惕inject Js文件中定义的onload事件将如何表现.

总结

以上是内存溢出为你收集整理的使用android中的webview将javascript文件注入我的网站全部内容,希望文章能够帮你解决使用android中的webview将javascript文件注入我的网站所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1115663.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存