1.取得腳本解釋器的管理器Manager

員工經(jīng)過(guò)長(zhǎng)期磨合與沉淀,具備了協(xié)作精神,得以通過(guò)團(tuán)隊(duì)的力量開(kāi)發(fā)出優(yōu)質(zhì)的產(chǎn)品。創(chuàng)新互聯(lián)堅(jiān)持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡(jiǎn)單”。公司專注于為企業(yè)提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、電商網(wǎng)站開(kāi)發(fā),成都小程序開(kāi)發(fā),軟件按需網(wǎng)站開(kāi)發(fā)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。
2.從管理器中取得js的解釋器實(shí)例ScriptEngine
3.取得存儲(chǔ)javascript變量的Bindings實(shí)例
4.把一個(gè)java.io.Reader流及Bindings傳遞給ScriptEngine的eval方法返回腳本運(yùn)行結(jié)果,如果執(zhí)行中發(fā)生錯(cuò)誤,會(huì)拋出ScriptException異常。
例:運(yùn)行javascript腳本的一個(gè)java程序
throwsIOException{ScriptEngineManagerscriptManager=newScriptEngineManager;//從管理器中獲取js的解釋器//定義我們要運(yùn)行的腳本文件Stringfilename=null;//通過(guò)解釋器來(lái)獲得存儲(chǔ)javascript變量的Bindings的實(shí)例,使它們提供給腳本。Bindingsbindings=js.createBindings;//在map中獲取和設(shè)置值的方法publicObjectget;//使用我們的name/value對(duì)(即javascript變量)Bindingsbindings=newSimpleBindings(defaults);//創(chuàng)建一個(gè)變量,用于存放腳本執(zhí)行的內(nèi)容ScriptContextcontext=newSimpleScriptContext();//設(shè)置那些Bindings在Context中,使它們可讀。但這樣的變量定義的腳本不要放入我們的Map中context.setBindings(bindings,ScriptContext.GLOBAL_SCOPE);BufferedReaderin=newBufferedReader(newFileReader(filename));Stringline;while((line=in.readLine())!=null){line=line.trim();if(line.length()==0)continue;//跳過(guò)空行if(line.charAt(0)==‘#‘)continue;//跳過(guò)命令intpos=line.indexOf(":");if(pos==-1){thrownewIllegalArgumentException("syntax:"+line);}Stringname=line.substring(0,pos).trim();Stringvalue=line.substring(pos+1).trim();charfirstchar=value.charAt(0);intlen=value.length();charlastchar=value.charAt(len-1);if(firstchar==‘"‘lastchar==‘"‘){//雙引號(hào)引用的值為字符串defaults.put(name,value.substring(1,len-1));}elseif(Character.isDigit(firstchar)){//如果開(kāi)始是一個(gè)數(shù)字try{doubled=Double.parseDouble(value);defaults.put(name,value);}catch(NumberFormatExceptione){//沒(méi)有數(shù)字,是一個(gè)stringdefaults.put(name,value);}}elseif("true".equals(value)){//處理布爾值defaults.put(name,Boolean.TRUE);}elseif("false".equals(value)){defaults.put(name,Boolean.FALSE);}elseif("null".equals(value)){//處理null值defaults.put(name,null);}elseif(firstchar==‘{‘lastchar==‘}‘){//如果值是在一對(duì)大括號(hào)之內(nèi),則執(zhí)行javascript代碼Stringscript=value.substring(1,len-1);Objectresult=engine.eval(script,context);defaults.put(name,result);}else{//其它情況,剛好是一個(gè)字符串defaults.put(name,value);}}}//一個(gè)簡(jiǎn)單的類的測(cè)試程序publicstaticvoidmain(String[]args)throwsIOException,ScriptException{Configurationdefaults=newConfiguration();defaults.load(args[0]);Set
在Android上怎樣實(shí)現(xiàn)JAVA和JS交互呢?Android的webview是基于webkit內(nèi)核的,webview中集成了js與java互調(diào)的接口函數(shù),通過(guò)addJavas criptInterface方法,可以將Java的類注冊(cè)進(jìn)webkit,給網(wǎng)頁(yè)上的js進(jìn)行調(diào)用,而且還可以通過(guò)loadUrl方法是給webkit傳遞一個(gè)URL,供瀏覽器來(lái)進(jìn)行解析,實(shí)現(xiàn)Java和js交互。
要想運(yùn)行網(wǎng)頁(yè)上的js腳本,webview必須設(shè)置支持Javas cript。
Java代碼
1mWebview.getSettings().setJavas criptEnabled(true);
然后是設(shè)置webview要加載的網(wǎng)頁(yè):
web的網(wǎng)頁(yè):webView.loadUrl("");
本地的網(wǎng)頁(yè):webView.loadUrl(""); //本地的存放在:assets文件夾中
webview做完基本的初始化后我們還要要給它,加進(jìn)一個(gè)回調(diào)的代理類Javas criptInterface,并給它一個(gè)調(diào)用的名稱:ncp
Java代碼
1mWebView.addJavas criptInterface(new Javas criptInterface(),"ncp");
Javas criptInterface可以是一個(gè)普通的Java類,類實(shí)現(xiàn)的方法,均可被js回調(diào):
Java代碼
final class Javas criptInterface {
public int callOnJs() {
return 1000;
}
public void callOnJs2(String mode) {
//TODO
}
}
Java要調(diào)用js的方法,只需知道js的方法名稱即可:
Java代碼
1mWebView.loadUrl("javas cript:onSaveCallback()");
jsp中可以將java,js,htm糅合在一起,這是一種用法,另外如果你用過(guò)servlet,就會(huì)知道本身servlet調(diào)用輸出方法可以生成HTML,那也是可以用js代碼的。
HTML中標(biāo)簽的id是唯一的,document.all返回的應(yīng)該個(gè)數(shù)組,通過(guò)id去找標(biāo)簽,只能找到一個(gè),就是最后一個(gè)id等于你所指的那個(gè)。
你看看我給你的是不是你想要的結(jié)果:
script
function show(isChecked,showName,num){
for(var n = 1; n = num; n++){
document.getElementById(showName + n).style.display=isChecked ? 'block' : 'none';
}
}
/script
div
table width="100%" border="1" cellspacing="0" cellpadding="0"
tr
tdinput name=checkbox2 type=checkbox onclick="show(this.checked,'jf',2)"aaa/td
tdinput name=checkbox3 type=checkbox onclick="show(this.checked,'eth',2)"bbb/td
tdinput name=checkbox5 type=checkbox onclick="show(this.checked,'grid',2)"ccc/td
/tr
/table
table width="100%" border="1" cellspacing="0" cellpadding="0"
tr
td id="jf1" style="display:none"aaa/td
td id="eth1" style="display:none"bbb/td
td id="grid1" style="display:none"ccc/td/td
/tr
tr
td id="jf2" style="display:none"aaa/td
td id="eth2" style="display:none"bbb/td
td id="grid2" style="display:none"ccc/td/td
/tr
/table
/div
網(wǎng)頁(yè)標(biāo)題:java類中寫(xiě)js代碼,java編譯成js
文章起源:http://chinadenli.net/article9/dsipjoh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、、網(wǎng)站排名、網(wǎng)站制作、定制開(kāi)發(fā)、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)