當前位置:首頁 » 編程語言 » java調用js方法

java調用js方法

發布時間: 2022-12-25 16:20:35

java js 怎麼用其他js的方法調用

舉個例子 首先導入要的JS
<script type="text/javascript" src="js/myDemo.js"></script>
<script type="text/javascript">

$(function(){

$("#divSave").hide(); //先讓div隱藏
$("#zeng").click(function(){
$("#divSave").fadeIn("fast");//淡入淡出效果 顯示div
show();//////////////////////////這里就是導入的JS中方法

});

$("#closeButton").click(function(){
$("#divSave").fadeOut("fast");//淡入淡出效果 隱藏div

});

$("#login").hide(); //先讓div隱藏
$("#loginButton").click(function(){
$("#login").fadeIn("fast");//淡入淡出效果 顯示div
});

$("#closeLogin").click(function(){
$("#login").fadeOut("fast");//淡入淡出效果 隱藏div

});

});
</script>

❷ android java怎麼調用webview中js方法

Android平台上使用js調用java方法,主要是通過webview控制項提供的 webview.addJavascriptInterface(new Person(this), "per"); 這個方法將java對象注入到js中,然後可以在js中通過調用該java對象的方法來實現回調,如下代碼:
1.html文件,demo.html<html> <head> <script type="text/javascript" > function updateHtml(type,type2){ document.getElementById("content").innerHTML = "彈出對話框,測試"+type+type2; alert("dialog"); } </script> </head> <body> 這是一個js與android的例子 <a onClick="window.ceshi.startFunction()" href="">彈出對話框</a> 調用對象方法 <a onClick="per.print()" href="">調用對象方法</a> <span id="content"></span> </body> </html>

❸ java調用請求頁面js方法有哪些

其實網上有很多方法

/** 載入腳本引擎,並在java中調用js方法 */

public void test2(){

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = manager.getEngineByName("javascript");

try {

String str="2&1";

Double d = (Double) engine.eval(str);

Integer i=d.intValue();

System.out.println(i);

} catch (ScriptException ex) {

ex.printStackTrace();

} }

/*

* 在java中調用js,jdk1.6中有載入js引擎類,然後由它來調用js方法。

* 並通過JDK平台給script的方法中的形參賦值

*/

public void test(String name)

{

ScriptEngineManager sem = new ScriptEngineManager();

/**sem.getEngineByExtension(String extension)參數為js

sem.getEngineByMimeType(String mimeType) 參數為application/javascript 或者text/javascript

sem.getEngineByName(String shortName)參數為js或javascript或JavaScript

*/

ScriptEngine se = sem.getEngineByName("js");

try

{

String script = "function say(){ return 'hello,'"+name+"; }";

se.eval(script);

Invocable inv2 = (Invocable) se;

String res=(String)inv2.invokeFunction("say",name);

System.out.println(res);

}

catch(Exception e)

{

e.printStackTrace();

}

}

/** 演示如何將java中對象作為js中全局變數,同時演示將file類賦給腳本語言,並獲得其屬性。

*/

public void testScriptVariables()

{

ScriptEngineManager sem=new ScriptEngineManager();

ScriptEngine engine=sem.getEngineByName("js");

File file=new File("c:\\1.txt");

engine.put("f", file);

try {

engine.eval("println('path:'+f.getPath())");//無法使用alert方法

} catch (ScriptException e) {

e.printStackTrace();

}

}

/*

* 演示如何在java中如何通過線程來啟動一個js方法

*/

public void testScriptInterface() throws ScriptException

{

ScriptEngineManager sem=new ScriptEngineManager();

ScriptEngine engine=sem.getEngineByName("js");

String script="var obj=new Object();obj.run=function(){println('test thread')}";

engine.eval(script);

Object obj=engine.get("obj");//獲取js中對象

Invocable inv=(Invocable)engine;

Runnable r=inv.getInterface(obj,Runnable.class);

Thread t=new Thread(r);

t.start();

}

❹ 在Android上怎樣實現JAVA和JS交互

在Android的開發過程中、遇到一個新需求、那就是讓Java代碼和Javascript代碼進行交互、在IOS中實現起來很麻煩、而在Android中相對來說容易、Android對這種交互進行很好的封裝、其實可以很簡單的用Java代碼調用WebView中的js函數、也可以用WebView中的js來調用Android應用中的Java代碼

一、網頁的JS代碼調用ANDROID中JAVA代碼的方法

在網頁中調用java代碼、需要在webview控制項中添加javascriptInterface

contentWebView = (WebView) findViewById(R.id.webview);

//啟用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js對象名");

在Activity中定義一個要被js調用的方法、src為js傳遞過來的參數、如果沒有不傳也可以的。

public void jsFunction(final String str) {

Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
runOnUiThread(new Runnable() {
@Override
public void run() {
//在里對Android應用的UI進行處理
}
});
}

在網頁中、只需要像調用js方法一樣、進行調用就可以

<a onClick="window.js對象名.jsFunction(´hello world´)" >

點擊調用java代碼並傳遞參數
</a>

二、ANDROID中JAVA代碼調用網頁的JS代碼的方法

Java代碼調用js並傳參其實是通過WebView的loadUrl方法去調用的、只是參數url的寫法不一樣

// 無參數調用

contentWebView.loadUrl("javascript:javacalljs()");
// 傳遞參數調用
contentWebView.loadUrl("javascript:javacalljswithargs("
+ "´hello world´" + ")");

三、JAVA和JS交互注意事項

1、Java 調用 js 裡面的函數、效率並不是很高、估計要200ms左右吧、做交互性很強的事情、這種速度很難讓人接受、而js去調Java的方法、速度很快、50ms左右、所以盡量用js調用Java方法

2、Java 調用 js 的函數、沒有返回值、調用就控制不到

3、Js 調用 Java 的方法、返回值如果是字元串、你會發現這個字元串是 native 的、轉成 locale 的才能正常使用、使用 toLocaleString() 函數就可以、不過這個函數的速度並不快、轉化的字元串如果很多、將會很耗費時間

4、網頁中盡量不要使用jQuery、執行起來需要5-6秒、最好使用原生的js寫業務腳本、以提升載入速度、改善用戶體驗

❺ 如何在java中調用js方法

[java] view plainprint?
<span style="font-size:18px;">package suggestion16;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;

import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class ScriptText {

public static void main(String[] args) throws FileNotFoundException, ScriptException, Exception {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
Bindings bind = engine.createBindings();
bind.put("factor", 2); //這里綁定一個factor的值為2.
engine.setBindings(bind,ScriptContext.ENGINE_SCOPE);
Scanner input = new Scanner(System.in);
while(input.hasNext())
{
int first = input.nextInt();
int sec = input.nextInt();
System.out.println("輸入的參數為:"+ first+ " , " + sec);
engine.eval(new FileReader("E:/cal.js"));
if(engine instanceof Invocable)
{
Invocable in = (Invocable)engine;
Double result = (Double)in.invokeFunction("cal",first,sec);
System.out.println("運算結果為:" + result.intValue());
}
}
}

}
</span>

其中的「E:/cal.js」就是我們js文件的保存路徑。並且這個主函數可以循環的輸入。
我們運行一下這個程序得到的結果如下:
[html] view plainprint?
<span style="font-size:18px;">1
2
輸入的參數為:1 , 2
運算結果為:1
</span>
上面也就是 調用了 1 + 2 - 2 = 1 ,所以結果為1
我們將js文件中的function方法改變下,改編為下面的函數:
[javascript] view plainprint?
<span style="font-size:18px;">function cal(var1,var2)
{
return var1+var2*factor;
}</span>

❻ java怎麼調用javascript

可參考:
package javaIjs;

/**
* @param args
*/

import java.io.FileReader;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

/**
* Java調用並執行js文件,傳遞參數,並活動返回值
*
* @author manjushri
*/
public class ScriptEngineTest {

public static void main(String[] args) throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");

String jsFileName = System.getProperty("user.dir")+"/src/javaIjs/expression.js";
// 讀取js文件
FileReader reader = new FileReader(jsFileName);
// 執行指定腳本
System.out.println(engine.getContext().getReader());
engine.eval(reader);
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine;
// 調用merge方法,並傳入兩個參數
// c = merge(2, 3);
Double c = (Double) invoke.invokeFunction("merge1", 21, 3);
System.out.println("c = " + c);
}
reader.close();
}
}

❼ 如何用java執行指定頁面中的js代碼

要在java中執行js代碼,首先明白,java不支持瀏覽器本身的方法。支持自定義的js方法,否則會報錯

先新建一個js文件:jsss.js

內容如下:

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); // 執行指定腳本 engine.eval(reader);
if(engine instanceof Invocable) {
Invocable invoke = (Invocable)engine; // 調用merge方法,並傳入兩個參數
Double c = (Double)invoke.invokeFunction("aa", 2, 3); //調用了js的aa方法
System.out.println(c);
}
// engine.eval("alert("js alert");"); // 不能調用瀏覽器中定義的js函數 // 錯誤,會拋出alert引用不 }
}

❽ java 調用 js函數

function是屬於javascript裡面的語法,而<%%>裡面調用的是java的語法,所以想要用<%%>調用alert()是不行了,因為他們不是同一個東西。
不知道你的意思是不是頁面一載入就進行調用alert(),如果是這樣的話,建議使用onload事件,表示頁面載入的時候調用alert();
或者如果是點擊的時候調用,那麼久調用onclick()..總而言之可以使用事件完成。

❾ java後台怎麼調用前台js方法

可使用前台js申請後台java代碼,把數據用返回值的方式,返回給前台。這種方式用的最多的就是使用ajax了。使用在後台與伺服器進行少量數據交換,ajax可使網站實現非同步更換。這意味著可在不重新載入整個網站的情況下,關於網站的某個部分進行更換。

熱點內容
迅雷阻止上傳 發布:2024-05-05 21:26:19 瀏覽:913
資料庫運維題 發布:2024-05-05 21:21:47 瀏覽:961
RM魔塔編程 發布:2024-05-05 21:21:47 瀏覽:285
matlab獲取文件夾 發布:2024-05-05 21:12:24 瀏覽:291
一根式演算法 發布:2024-05-05 21:12:23 瀏覽:955
php無刷新 發布:2024-05-05 21:08:11 瀏覽:982
搭建一個流媒體伺服器 發布:2024-05-05 20:40:59 瀏覽:667
2017中超資料庫 發布:2024-05-05 20:37:25 瀏覽:379
編程包游戲 發布:2024-05-05 20:25:00 瀏覽:609
系統鎖屏忘記密碼如何設置 發布:2024-05-05 20:18:07 瀏覽:760