更好的Applet體驗(yàn):海報(bào)幀

字號(hào):

Quicktime電影就有海報(bào)幀的思想。電影中的一幀(經(jīng)常就是其中的第一幀)將會(huì)放到該電影出現(xiàn)的地方。當(dāng)用戶(hù)點(diǎn)擊海報(bào)幀時(shí),實(shí)現(xiàn)的電影才會(huì)通過(guò)網(wǎng)絡(luò)被加載進(jìn)來(lái)。這就能極大地加快該電影所在Web頁(yè)面的加載速度。使用少許JavaScript,完全可以為Java Applet實(shí)現(xiàn)相同的功能。
    Applet的海報(bào)幀
    在研究這個(gè)Demo之前,我必須要提到,我個(gè)人尚未在IE瀏覽器中測(cè)試過(guò)這個(gè)Demo.如果你發(fā)現(xiàn)這個(gè)Demo不能在某個(gè)瀏覽器中運(yùn)行,請(qǐng)向錯(cuò)誤信息發(fā)送給我,以便我能更新這個(gè)JavaScript.基本思想非常的簡(jiǎn)單,創(chuàng)建一個(gè)div,它包含一個(gè)鏈接和一張屏幕截圖。當(dāng)用戶(hù)點(diǎn)擊該鏈接時(shí),我們使用一個(gè)新的applet元素去替換頁(yè)面中的a和img元素。一旦瀏覽器察覺(jué)到了這個(gè)新的applet元素,它將下載Java插件并啟動(dòng)這個(gè)Applet.這就有一個(gè)例子:如果你點(diǎn)擊了這張圖片,一個(gè)Applet就會(huì)被加載到該圖片所在的位置,并會(huì)說(shuō)"applet loaded".
    JavaScript
    如下就是這個(gè)JavaScript腳本:
    Code highlighting produced by Actipro CodeHighlighter (freeware)
    -->
    該腳本的第一部分初始化了兩個(gè)哈希表,它們包含了applet元素的屬性與嵌套的param標(biāo)簽。然后,它會(huì)使用document.createElement()方法去創(chuàng)建這個(gè)applet,并配置其中的屬性與PARAM元素。到目前為止,還很直接。真正地奇妙之事發(fā)生在generateInlineAppletTag函數(shù)的最后四行。它使用傳入的appletID參數(shù)與包含著上述鏈接與圖片的div元素相聯(lián)在一起,然后它會(huì)找到并刪除該鏈接,而用新的applet元素去替代這個(gè)鏈接。
    HTML
    要使用上述javascript函數(shù),你只需將它放到頁(yè)面的頂部,并通過(guò)那張屏幕截圖鏈接的href去調(diào)用它。在本例中,我使用了:
    

        />
    這個(gè)div被命名為appletDiv,鏈接被命名為screenshot1.該鏈接的href會(huì)調(diào)用上述javascript函數(shù),并傳入div與鏈接的名稱(chēng)。最后該圖片就只是顯示將要運(yùn)行的Applet的一張屏幕截圖,該圖被一個(gè)播放按鈕覆蓋著。就這么簡(jiǎn)單,在這里你可以看到完整的javascript和HTML語(yǔ)句。
    結(jié)論
    這個(gè)javascript只是一個(gè)開(kāi)始。你還能很容易的擴(kuò)展它,使圖片上能展現(xiàn)關(guān)于這個(gè)Applet的更多信息。你也可以把這個(gè)javascript重寫(xiě)為一個(gè)更加可重用的形式,使它能夠被你的整個(gè)站點(diǎn)所共享。
    下次考試大將向你展示如何使用新的發(fā)布工具包去偵測(cè)當(dāng)前已安裝的Java版本,并啟動(dòng)更新程序