要在java中執(zhí)行js代碼,首先明白,java不支持瀏覽器本身的方法。支持自定義的js方法,否則會(huì)報(bào)錯(cuò)

成都創(chuàng)新互聯(lián)專注于霞山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供霞山營銷型網(wǎng)站建設(shè),霞山網(wǎng)站制作、霞山網(wǎng)頁設(shè)計(jì)、霞山網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造霞山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供霞山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
先新建一個(gè)js文件:jsss.js
內(nèi)容如下:
function aa(a,b){ ? ?return a+b;
}
然后在java中寫代碼:
public class ZipTest {
public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
String jsFileName="G:\\javaPro\\zmwmcc\\WebRoot\\jsss.js";
FileReader reader = new FileReader(jsFileName); ? // 執(zhí)行指定腳本 ? ?? ? ? ? ?engine.eval(reader);
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)engine; ? ?// 調(diào)用merge方法,并傳入兩個(gè)參數(shù)
Double c = (Double)invoke.invokeFunction("aa", 2, 3); //調(diào)用了js的aa方法
System.out.println(c);
}
// engine.eval("alert(\"js alert\");"); ? ?// 不能調(diào)用瀏覽器中定義的js函數(shù) // 錯(cuò)誤,會(huì)拋出alert引用不 ? ?}
}
1.取得腳本解釋器的管理器Manager
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;//通過解釋器來獲得存儲(chǔ)javascript變量的Bindings的實(shí)例,使它們提供給腳本。Bindingsbindings=js.createBindings;//在map中獲取和設(shè)置值的方法publicObjectget;//使用我們的name/value對(即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;//跳過空行if(line.charAt(0)==‘#‘)continue;//跳過命令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)){//如果開始是一個(gè)數(shù)字try{doubled=Double.parseDouble(value);defaults.put(name,value);}catch(NumberFormatExceptione){//沒有數(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==‘}‘){//如果值是在一對大括號(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è)簡單的類的測試程序publicstaticvoidmain(String[]args)throwsIOException,ScriptException{Configurationdefaults=newConfiguration();defaults.load(args[0]);Set
HTML中標(biāo)簽的id是唯一的,document.all返回的應(yīng)該個(gè)數(shù)組,通過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
jsp中可以將java,js,htm糅合在一起,這是一種用法,另外如果你用過servlet,就會(huì)知道本身servlet調(diào)用輸出方法可以生成HTML,那也是可以用js代碼的。
網(wǎng)站欄目:java文件中寫js代碼,js調(diào)用java文件
URL標(biāo)題:http://chinadenli.net/article39/dseodsh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、用戶體驗(yàn)、關(guān)鍵詞優(yōu)化、定制網(wǎng)站、域名注冊、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)