我有一個使用deployJava腳本部署的WebStart小程序。 JNLP文件看起來是這樣的:使用applet描述符和javascript在jnlp中輪詢applet下載進度
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jnlp codebase="" href="launch.jnlp" spec="1.0+">
<information>
<title>someApp</title>
<vendor>someCompany</vendor>
<homepage href="http://www.someCompanysWebsite.net"/>
<description>someDescription</description>
<description kind="short">someShortDescription</description>
<offline-allowed/>
</information>
<update check="background"/>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+"/>
<jar href="mainJar.jar" main="true"/>
<jar href="lib1.jar"/>
<jar href="lib2.jar"/>
<jar href="lib3.jar"/>
<jar href="platform.jar"/>
<jar href="plugin.jar"/>
<jar href="slf4j-api-1.6.1.jar"/>
<jar href="slf4j-simple-1.6.1.jar"/>
</resources>
<applet-desc height="1" main-class="com.companyName.applet.appletClass" name="appletName" width="1">
</applet-desc>
</jnlp>
正如你所看到的,我的小程序是1x1的大小,所以我不希望顯示與任何東西。它只是將一些java方法暴露給javascript。所以,如果我做一個JavaScript調用,例如
//javascript code
var applet = document.getElementById('appletName');
我得到一個有效的句柄小程序,我可以調用它的方法在JavaScript這樣的:
//javascript code
applet.doStuff();
當然,每小程序定義了isActive()方法,所以在我的javascript代碼,我可以檢查這樣如果applet滿載:
//javascript code
function isFullyLoaded()
{
if (!applet.isActive()){
setTimeout('isFullyLoaded()',1000);
}
else
{
//do nice stuff requiring the applet is loaded
}
}
然而,隨着小程序的加載可能需要一段時間,我想HAV e加載的進度指示。快速瀏覽一下Sun(或Oracle,如果你是這麼傾向的),可以看到: http://download.oracle.com/javase/tutorial/deployment/applet/customProgressIndicatorForApplet.html
但是,這意味着我想在加載小程序時顯示加載欄或任何其他內容。我不喜歡小程序的外觀,這就是爲什麼我只是想查詢的小程序加載與JavaScript一樣,在一些間隔:
//javascript code
alert(applet.getLoadingProgress());
我應該怎麼做,我應該改變JNLP聲明或類似的東西。任何指針或意見將不勝感激。請注意,我不想要自定義進度欄,而僅僅是一個結構,以便在加載期間可以使用JavaScript輪詢進度。
乾杯。
編輯: @amol 我會提請你注意的是JNLP部署applet和應用程序,它們的加載過程中,調用通用DownloadServiceListener類的方法的進步(URL的java.net.URL,java.lang.String中的版本,長readSoFar,long total,int overallPercent),只要下載一個所需的罐子。瞭解罐子的總數和尚未下載的罐子的數量將成爲完美的進步指標。我還希望引起您的注意,如果您調試了JNLP部署,您將看到這些方法被調用並記錄爲網絡級事件。所以,我的問題是如何使用JavaScript獲得這些方法的一個掛起,所以我可以有一些關於進度的估計,因爲我不想讓用戶看着java控制檯來估計進度。我不想也顯示一個不確定的進度加載器,因爲實現這個很容易,但是沒有實際用處。
這個問題當然是關於如何使用javascript輪詢applet web-start部署的applet的進度,而不是如何製作自定義加載屏幕或使用自定義加載屏幕替換默認圖形。 – 2011-04-15 07:08:44
有很多方法可以實現最終目標,這看起來至少是一個有效的選項。如果該選項對於OP不起作用,OP不應該接受這是正確的答案,但我不確定爲什麼它被低估。 +1 @安德魯湯普森。 – 2011-04-15 15:34:14
當然,它是低估的,因爲它根本不是問題的根源。問題是:'如何使用javascript獲取JNLP部署的applet的進度',而不是'如何更改applet外觀'或'如何使用自定義加載器'。因此,答案是無關緊要的,因爲它是一個完全不同的問題的答案。 – 2011-04-16 21:28:39