因為之前是用

<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),這部份就留給大家去研究吧

 

,

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


留言列表 (1)

發表留言
  • PCC
  • 這樣就可以成功動態載入了

    <script src="http://www.java.com/js/deployJava.js"></script>
    <div id="dynapplet">
    <script>
    <!-- 中間這一大串不變 -->
    </script>
    </div>
    <script>
    var d = document.getElementById("dynapplet");
    var d_in = d.innerHTML;
    d.innerHTML = "";
    </script>
    <a onClick="javascript:d.innerHTML=d_in">Click Me</a>

    在Firefox 18 及 IE 9 及 JRE 7 下測試,按下Click Me後Applet就會載入。

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼