
我想将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文件注入我的网站所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)