因為之前是用

<script src="http://www.java.com/js/deployJava.js"></script>
<script>

var hasJava = false;
if (deployJava.versionCheck('1.6+')) {
hasJava = true;


attributes = { id:'applet', code:'applet.class', archive:'applet.jar', width:0, height:0} ;
parameters = {jnlp_href: 'applet.jnlp'} ;

deployJava.runApplet(attributes, parameters, '1.6');


} else {
//document.location.href="http://java.sun.com";
//alert('you not have java');
hasJava = false;
}

</script>

來執行applet

但是用此方法有個很大的缺點,就是無法動態載入

如果要讓網頁點名某個按鈕才載入applet的話,用此方法是不行的

 

要改用另一種方式來建立

var app = document.createElement('applet');
app.id= 'AsFileTransferApplet';
app.archive= 'applet.jar, gson-2.1.jar';
app.code= 'asustor.AsFileTransferApplet';
app.width = '0';
app.height = '0';
//document.getElementsByTagName('body')[0].appendChild(app);
document.getElementById('appletContent').appendChild(app);

重點在於使用deployJava時會利用jnlp來設定一些資訊包括會使用到的jar檔

而用createElemnet方法建立時必須把相關定義在jnlp中使用的jar檔也加進來才行

否則呼叫到方法時就會出現java.lang.reflect.InvocationTargetException

所以當使用applet發生java.lang.reflect.InvocationTargetException記得先檢查你所設定的archive是不是正確的喔

為了這個問題花了我快二天的時間,網路上也找不到比較詳細的說明orz

 

另外因應不同瀏覽器要使用的語法不盡相同(applet, embed, object),這部份就留給大家去研究吧

 

arrow
arrow

    狼翔月影 發表在 痞客邦 留言(1) 人氣()