电竞比分网-中国电竞赛事及体育赛事平台

分享

使用applet描述符和javascript在jnlp中輪詢(xún)applet下載進(jìn)度

 印度阿三17 2019-07-30

我有一個(gè)使用deployJava腳本部署的WebStart applet. jnlp文件如下所示:

<?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 />
        <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>

如您所見(jiàn),我的applet大小為1×1,因此我不想顯示任何內(nèi)容.它只是用于向javascript公開(kāi)一些java方法.所以,例如,如果我進(jìn)行javascript調(diào)用

//javascript code
var applet = document.getElementById('appletName');

我得到applet的有效句柄,我能夠在javascript中調(diào)用它的方法,如下所示:

 //javascript code
    applet.doStuff();

當(dāng)然,每個(gè)applet都定義了isActive()方法,因此在我的javascript代碼中,如果applet完全加載,我可以像這樣檢查:

    //javascript code
    function isFullyLoaded()
    {
      if ( !applet.isActive() ){
         setTimeout('isFullyLoaded()',1000);
      }
      else 
      {
         //do nice stuff requiring the applet is loaded
      }
    }

但是,由于applet的加載可能需要一段時(shí)間,因此我希望獲得其加載的進(jìn)度指示.快速瀏覽一下Sun(或Oracle,如果你是如此傾向),可以看出這一點(diǎn):
http://download.oracle.com/javase/tutorial/deployment/applet/customProgressIndicatorForApplet.html

但是,這意味著我想在applet加載時(shí)顯示加載欄或任何內(nèi)容.我不喜歡applet外觀,這就是為什么我只想用javascript輪詢(xún)applet加載,就像在某個(gè)時(shí)間間隔上那樣:

//javascript code
alert(applet.getLoadingProgress());

我應(yīng)該怎么做,我應(yīng)該更改jnlp聲明或類(lèi)似的東西.任何指針或評(píng)論將不勝感激.請(qǐng)注意,我不想要自定義進(jìn)度條,只是一個(gè)結(jié)構(gòu),以便我可以在加載過(guò)程中使用javascript輪詢(xún)進(jìn)度.

干杯.

編輯:
@amol
我將提醒您注意JNLP部署applet和應(yīng)用程序,在加載期間,每當(dāng)調(diào)用一個(gè)通用的DownloadServiceListener類(lèi)的方法進(jìn)度(java.net.URL url,java.lang.String版本,long readSoFar,long total,int overallPercent)下載所需的罐子.了解罐子總數(shù)和尚未下載的罐子數(shù)量將成為完美的進(jìn)步指標(biāo).我還想提醒您注意,如果您調(diào)試JNLP部署,您將看到這些方法被調(diào)用并記錄為網(wǎng)絡(luò)級(jí)事件.所以,我的問(wèn)題是如何使用javascript來(lái)掌握這些方法,因此我可以對(duì)進(jìn)度有一些估計(jì),因?yàn)槲也幌M脩?hù)查看java控制臺(tái)來(lái)估計(jì)進(jìn)度.我不想也顯示一個(gè)不確定的進(jìn)度加載器,因?yàn)閷?shí)現(xiàn)它是輕而易舉的,但沒(méi)有任何實(shí)際用途.

解決方法:

我不知道如何進(jìn)行民意調(diào)查,但我過(guò)去用來(lái)實(shí)現(xiàn)你所描述的方法如下 –

>加載小程序時(shí)(在我的情況下
我通常會(huì)插入相關(guān)的html
DOM點(diǎn)擊按鈕或
某事),展示你的
javascript / html具體加載
指示符.
>當(dāng)applet加載時(shí),它會(huì)回調(diào)一個(gè)
javascript方法. JS現(xiàn)在知道applet已完全加載,取下加載指示器并進(jìn)行任何進(jìn)一步的JS-> applet通信等.

(使用這種方法無(wú)法顯示確定的進(jìn)度條.但是一個(gè)掩蓋整個(gè)html主體或不確定進(jìn)度條的通用加載指示器是非常可能的,并且很容易實(shí)現(xiàn))

來(lái)源:https://www./content-1-368851.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多