<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    byterat

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      54 隨筆 :: 0 文章 :: 15 評(píng)論 :: 0 Trackbacks

    2008年6月5日 #

    Eclipse及其插件介紹和下載

    0.Eclipse下載
    EMF,GEF - Graphical Editor Framework,UML2,VE - Visual Editor都在這里下載
    http://www.eclipse.org/downloads/index.php

    0.5.lomboz J2EE插件,開(kāi)發(fā)JSP,EJB
    http://forge.objectweb.org/projects/lomboz
    1.MyEclipse J2EE開(kāi)發(fā)插件,支持SERVLET/JSP/EJB/數(shù)據(jù)庫(kù)操縱等
    http://www.myeclipseide.com

    2.Properties Editor 編輯java的屬性文件,并可以自動(dòng)存盤(pán)為Unicode格式
    http://propedit.sourceforge.jp/index_en.html

    3.Colorer Take 為上百種類(lèi)型的文件按語(yǔ)法著色
    http://colorer.sourceforge.net/

    4.XMLBuddy 編輯xml文件
    http://www.xmlbuddy.com

    5.Code Folding 加入多種代碼折疊功能(比eclipse自帶的更多)
    http://www.coffee-bytes.com/servlet/PlatformSupport

    6.Easy Explorer 從eclipse中訪問(wèn)選定文件、目錄所在的文件夾
    http://easystruts.sourceforge.net/

    7.Fat Jar 打包插件,可以方便的完成各種打包任務(wù),可以包含外部的包等
    http://fjep.sourceforge.net/

    8.RegEx Test 測(cè)試正則表達(dá)式
    http://brosinski.com/stephan/archives/000028.php

    9.JasperAssistant 報(bào)表插件(強(qiáng),要錢(qián)的)
    http://www.jasperassistant.com/

    10.Jigloo GUI Builder JAVA的GUI編輯插件
    http://cloudgarden.com/jigloo/

    11.Profiler 性能跟蹤、測(cè)量工具,能跟蹤、測(cè)量BS程序
    http://sourceforge.net/projects/eclipsecolorer/

    12.AdvanQas 提供對(duì)if/else等條件語(yǔ)句的提示和快捷幫助(自動(dòng)更改結(jié)構(gòu)等)
    http://eclipsecolorer.sourceforge.net/advanqas/index.html

    13.Log4E Log4j插件,提供各種和Log4j相關(guān)的任務(wù),如為方法、類(lèi)添加一個(gè)logger等
    http://log4e.jayefem.de/index.php/Main_Page

    14.VSSPlugin VSS插件
    http://sourceforge.net/projects/vssplugin

    15.Implementors 提供跳轉(zhuǎn)到一個(gè)方法的實(shí)現(xiàn)類(lèi),而不是接中的功能(實(shí)用!)
    http://eclipse-tools.sourceforge.net/implementors/
    16.Call Hierarchy 顯示一個(gè)方法的調(diào)用層次(被哪些方法調(diào),調(diào)了哪些方法)
    http://eclipse-tools.sourceforge.net/call-hierarchy/index.html

    17.EclipseTidy 檢查和格式化HTML/XML文件
    http://eclipsetidy.sourceforge.net/

    18.Checkclipse 檢查代碼的風(fēng)格、寫(xiě)法是否符合規(guī)范
    http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm

    19.Hibernate Synchronizer Hibernate插件,自動(dòng)映射等
    http://www.binamics.com/hibernatesync/

    20.VeloEclipse Velocity插件
    http://propsorter.sourceforge.net/

    21.EditorList 方便的列出所有打開(kāi)的Editor
    http://editorlist.sourceforge.net/

    22.MemoryManager 內(nèi)存占用率的監(jiān)視
    http://cloudgarden.com/memorymanager/

    23.swt-designer java的GUI插件
    http://www.swt-designer.com/

    24.TomcatPlugin 支持Tomcat插件
    http://www.eclipsetotale.com/tomcatPlugin.html

    25.XML Viewer
    http://tabaquismo.freehosting.net/ignacio/eclipse/xmlview/index.html

    26.quantum 數(shù)據(jù)庫(kù)插件
    http://quantum.sourceforge.net/

    27.Dbedit 數(shù)據(jù)庫(kù)插件
    http://sourceforge.net/projects/dbedit

    28.clay.core 可視化的數(shù)據(jù)庫(kù)插件
    http://www.azzurri.jp/en/software/index.jsp
    http://www.azzurri.jp/eclipse/plugins

    29.hiberclipse hibernate插件
    http://hiberclipse.sourceforge.net
    http://www.binamics.com/hibernatesync

    30.struts-console Struts插件
    http://www.jamesholmes.com/struts/console/

    31.easystruts Struts插件
    http://easystruts.sourceforge.net

    32.veloedit Velocity插件
    http://veloedit.sourceforge.net/

    33.jalopy 代碼整理插件
    http://jalopy.sourceforge.net/

    34.JDepend 包關(guān)系分析
    http://andrei.gmxhome.de/jdepend4eclipse/links.html

    35.Spring IDE Spring插件
    http://springide-eclip.sourceforge.net/updatesite/

    36.doclipse 可以產(chǎn)生xdoclet 的代碼提示
    http://beust.com/doclipse/
    posted @ 2008-06-05 15:44 比特鼠| 編輯 收藏

    2008年5月30日 #

         摘要: 有這樣一個(gè)函數(shù), 它接受一個(gè)函數(shù)(或者說(shuō)閉包)作為參數(shù)  閱讀全文
    posted @ 2008-05-30 15:19 比特鼠| 編輯 收藏

    2008年1月23日 #

    當(dāng)談到表格數(shù)據(jù)的設(shè)計(jì)時(shí),沒(méi)有太多的網(wǎng)頁(yè)設(shè)計(jì)師會(huì)有太大的興趣。今天我們已經(jīng)收集了20多個(gè)功能超大且看上去挺漂亮的Ajax/CSS表格設(shè)計(jì),并且教你一些表格設(shè)計(jì)中所運(yùn)用的技巧,例如表格數(shù)據(jù)的排序和過(guò)濾等。

    OK,讓我們來(lái)看一下這些表格:

    1. Tablecloth

    Tablecloth 由CSS Globe 開(kāi)發(fā),是一個(gè)輕巧易于使用的表格,簡(jiǎn)潔的將表格樣式添加到你的HTML 表格元素中。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Tablecloth

    2. Ask the CSS Guy Table

    Ask the CSS Guy Table教給我們要如何去創(chuàng)建能夠清晰顯出去資料之間的相關(guān)聯(lián)系的表格,例如:點(diǎn)擊一個(gè)表格元素時(shí),將突了顯示這個(gè)元素,并且在縱列和橫列都顯示出相關(guān)的類(lèi)別關(guān)系。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Ask the CSS Guy Table

    #3. A CSS styled table version 2

    Veerle Duoh 為我們展示了一個(gè)漂亮的表格設(shè)計(jì),并教我們?nèi)绾问褂肅SS來(lái)吸引用戶的眼球。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-A CSS styled table version 2

    #4. Sortable Table

    Sortable Table 演示了如何按升序或降序排列以及如何過(guò)濾表格中的數(shù)據(jù)。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Sortable Table

    5. Row Locking with CSS and JavaScript

    Css Guy再次對(duì)表格使用了聚焦高亮的效果,除非用戶再次點(diǎn)擊,否則表單數(shù)據(jù)將一直保持亮高。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Row Locking with CSS and JavaScript

    他還給了我們另一個(gè)示例:another example to Lock rows with radios .

    #6. Vertical scrolling tables

    如果您有大量的表格數(shù)據(jù),但卻沒(méi)有太大的空間來(lái)展示它,這可能是個(gè)比較好的方法:一個(gè)純CSS的表格與固定的標(biāo)題和頁(yè)腳,以及滾動(dòng)顯示的內(nèi)容。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Vertical scrolling tables

    7. Replicating a Tree table

    這是一個(gè)使用HTML 和CSS 設(shè)計(jì)的樹(shù)形狀表格。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Replicating a Tree table

    8 ) Paginate, sort and search a table with Ajax and Rails

    這個(gè)表格提供了一個(gè)動(dòng)態(tài)的界面,而不需要重新刷新整個(gè)頁(yè)面。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-ajax tables

    9. Collapsible tables with DOM and CSS

    此表格加上箭頭形象的腳本提示,用來(lái)控制表格的伸展和收縮。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Collapsible tables with DOM and CSS

    10. TableSorter plug-in for jQuery

    它的主要特性包括多列排序,支持<TH>的rowspan和colspan屬性以及許多其他功能。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-TableSorter plug-in for jQuery

    11. Stripe your tables the OO way

    使用了Javascript 為表格中的行進(jìn)行顏色交替,并且添加了onmouseoveronmouseout 事件,當(dāng)鼠標(biāo)點(diǎn)擊時(shí),切換背景顏色。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Stripe your tables the OO way

    12. MooTools Table Row & Column highlighting

    基于MooTools 框架,高亮顯示鼠標(biāo)懸停時(shí)的單元格所在的行和列。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-MooTools Table Row & Column highlighting

    13. CSS Table Gallery

    93 styled tables是一個(gè)專(zhuān)門(mén)收集表格樣式的站點(diǎn),下面是來(lái)自一個(gè)表格樣式的截圖:

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-CSS Table Gallery

    14. jQuery Table Filter

    可以對(duì)數(shù)據(jù)進(jìn)行各種不同的排序、過(guò)濾。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-jQuery Table Filter

    15. Sortable/Resizable/Editable TableKit

    TableKit基于Prototype框架,專(zhuān)門(mén)收集各種HTML表格,可以利用Ajax實(shí)時(shí)的進(jìn)行表格欄目大小、排序等編輯。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-sortable, resizable, editable

    16. Make all your tables sortable

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-sortable table

    17. Zebra Tables

    alistapart為我們提供了一個(gè)極好的例子,如何使用JavaScript和DOM的改變背景色風(fēng)格,以突出顯示單元格。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Zebra Tables

    18. Standardista Table Sorting

    Standardista Table Sorting 是一個(gè)Javascript模塊,讓您可以對(duì)HTML數(shù)據(jù)表的任何欄目進(jìn)行排序。

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Standardista Table Sorting

    19. GridView3 Example

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-GridView3 Example

    20. Mootable

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Mootable

    21. Drag & Drop Sortable Lists with JavaScript and CSS

    21個(gè)新奇漂亮的Ajax/CSS表格設(shè)計(jì)-Drag & Drop Sortable Lists with JavaScript and CSS

    可能還會(huì)有一些你更想尋找的詳細(xì)資料,下面是一些相關(guān)的資源鏈接:

    如果你知道其它更強(qiáng)大的Ajax/CSS表格,歡迎在此留言。

    posted @ 2008-01-23 17:46 比特鼠 閱讀(3201) | 評(píng)論 (0)編輯 收藏

    一個(gè)在線調(diào)色工具
    posted @ 2008-01-23 17:44 比特鼠 閱讀(392) | 評(píng)論 (1)編輯 收藏

    2008年1月11日 #

    /**
     * 加碼解碼工具
     * @author lwm
     *
     */

    public class Encode {
     
     /*
      * 對(duì)應(yīng)javascript的escape()函數(shù), 加碼后的串可直接使用javascript的unescape()進(jìn)行解碼
      */
     public static String escape(String src) {
      int i;
      char j;
      StringBuffer tmp = new StringBuffer();
      tmp.ensureCapacity(src.length() * 6);
      for (i = 0; i < src.length(); i++) {
       j = src.charAt(i);
       if (Character.isDigit(j) || Character.isLowerCase(j)
         || Character.isUpperCase(j))
        tmp.append(j);
       else if (j < 256) {
        tmp.append("%");
        if (j < 16)
         tmp.append("0");
        tmp.append(Integer.toString(j, 16));
       } else {
        tmp.append("%u");
        tmp.append(Integer.toString(j, 16));
       }
      }
      return tmp.toString();
     }

     /*
      * 對(duì)應(yīng)javascript的unescape()函數(shù), 可對(duì)javascript的escape()進(jìn)行解碼
      */
     public static String unescape(String src) {
      StringBuffer tmp = new StringBuffer();
      tmp.ensureCapacity(src.length());
      int lastPos = 0, pos = 0;
      char ch;
      while (lastPos < src.length()) {
       pos = src.indexOf("%", lastPos);
       if (pos == lastPos) {
        if (src.charAt(pos + 1) == 'u') {
         ch = (char) Integer.parseInt(src
           .substring(pos + 2, pos + 6), 16);
         tmp.append(ch);
         lastPos = pos + 6;
        } else {
         ch = (char) Integer.parseInt(src
           .substring(pos + 1, pos + 3), 16);
         tmp.append(ch);
         lastPos = pos + 3;
        }
       } else {
        if (pos == -1) {
         tmp.append(src.substring(lastPos));
         lastPos = src.length();
        } else {
         tmp.append(src.substring(lastPos, pos));
         lastPos = pos;
        }
       }
      }
      return tmp.toString();
     }

    }

    posted @ 2008-01-11 17:08 比特鼠 閱讀(1837) | 評(píng)論 (0)編輯 收藏

    2008年1月2日 #

    讀 YUI ,EXT等源碼的時(shí)候看JS天旋地轉(zhuǎn),那可不是51JS上那種挪挪位置就能理解的,此刻如果沒(méi)有JavaScrip的基礎(chǔ),更是像沒(méi)有星光的黑夜…….

    自以為覺(jué)得Js對(duì)象是很好理解的東東,然而真實(shí)踐起來(lái)卻一片糊涂。
    通過(guò)查閱經(jīng)典書(shū)籍《Professional JavaScript For Web Developers》稍微有些理解了

    JavaScript的基本類(lèi)型
    原始類(lèi)型如: Undefined Null Boolean Number String 等 用 typeof方法能辨別之
    引用類(lèi)型如: Object Function Array Boolean Number String Date等,用insanceof方法辨別之

    嚴(yán)格來(lái)講,JavaScript沒(méi)有對(duì)象(Object),但是由于和OO術(shù)語(yǔ)對(duì)應(yīng),所以也稱(chēng)之為對(duì)象。所以Array,Function,基本類(lèi)型,引用類(lèi)型,函數(shù),以及函數(shù)的屬性 等等這些都是對(duì)象。

    而對(duì)象分類(lèi),則可以分為內(nèi)置對(duì)象(Built-in Object) 和宿主對(duì)象(host object)。
    內(nèi)置對(duì)象如 Math,Data啊。
    宿主對(duì)象則如 BOM,DOM之類(lèi).

    重新回顧了下這些基本概念之后,在做簡(jiǎn)單實(shí)踐就有些理解了。
    因此對(duì)象的使用,創(chuàng)建方式不盡相同,最簡(jiǎn)單的歸類(lèi)如下:

    1 基本創(chuàng)建方式

    function Class() {
    window.alert("Hello Class!");
    }
    var clz= new Class();

    2 訪問(wèn)對(duì)象成員

    function Class(){
    this.x = " this is x";
    this.y = "this is y";
    this.z = viewXY;
    function viewXY(){
    alert("x+","+y);
    }
    }
    var clz= new Class();
    clz.viewXY();

    3 對(duì)象繼承

    function Parent() {
    this.type= "human!";
    }
    function Child(){
    this.age = "26";
    this.sex ="male";
    this.say= myInfo;
    function myInfo(msg){
    alert(msg+this.type+ ","+this.age+","+this.sex);
    }
    }
    Child.prototype = new Parent();
    var clild = new Child();
    clild.say("I'm ");

    4.重用原對(duì)象 (書(shū)上的例子太好了,搬來(lái)了)

    Funcion.prototype.toString() = function(){
    return "Function code hidden";
    }
    function sayHi(){
    alert("hi");
    }
    alert(sayHi.toString());
    posted @ 2008-01-02 11:06 比特鼠 閱讀(273) | 評(píng)論 (0)編輯 收藏

    2007年12月28日 #

    希望能做到以下幾點(diǎn):

    1. 在Java服務(wù)端架構(gòu)的設(shè)計(jì), 選型, 方案等方面有所突破! -- 這是最主要的!
    2. 也想玩一玩Web前端的AJAX編程, RIA(富互聯(lián)網(wǎng)應(yīng)用)等等
    3. 熟悉Linux/Unix系統(tǒng)的命令行操作
    4. 在Java中跑腳本語(yǔ)言Python, JRuby等等
    5. 項(xiàng)目管理

    暫時(shí)就這么多吧!

    posted @ 2007-12-28 09:41 比特鼠 閱讀(209) | 評(píng)論 (0)編輯 收藏

    2007年12月19日 #

    為 Ajax 安全性所提出的經(jīng)驗(yàn)法則:
    1. 如果你使用身份驗(yàn)證, 確定你在請(qǐng)求頁(yè)上檢查!
    2. 為 SQL 注入檢查。
    3. 為 JavaScript 注入檢查。
    4. 保留商務(wù)邏輯在服務(wù)器上!
    5. 不要假設(shè)每個(gè)請(qǐng)求是真正的!
    6. 確認(rèn)檢查數(shù)據(jù)!
    7. 審查請(qǐng)求的數(shù)據(jù)而且確定它是正確的。
    posted @ 2007-12-19 17:10 比特鼠 閱讀(280) | 評(píng)論 (0)編輯 收藏

    1. jvm內(nèi)部分為主工作區(qū)和線程工作區(qū)。主工作區(qū)是實(shí)例的所有線程共有,線程工作區(qū)是實(shí)例的每個(gè)線程專(zhuān)有的工作區(qū),其中包括一些主工作區(qū)的一些實(shí)例字段數(shù)據(jù)的拷貝。

    2. 服務(wù)器一般都有線程池,線程資源是可以重復(fù)利用的。你2000個(gè)用戶在線,不見(jiàn)得能又200個(gè)用戶同時(shí)(或者說(shuō)并發(fā))訪問(wèn)。再說(shuō),只要對(duì)象不是太大,我寧愿用200個(gè)拷貝,也不想讓用戶在這個(gè)200個(gè)任務(wù)的隊(duì)列里等待。

    3. 兩個(gè)DB之間的復(fù)制數(shù)據(jù),每個(gè)DB各自使用自己的Sequane來(lái)生成id。復(fù)制數(shù)據(jù)時(shí),如果DB中的外鍵是由DB維護(hù)的,則不會(huì)產(chǎn)生id沖突,如果外鍵是由外部程序維護(hù)的,則可能會(huì)產(chǎn)生錯(cuò)誤!

    4. 對(duì)于非static的類(lèi)的數(shù)據(jù)成員來(lái)說(shuō),在該類(lèi)產(chǎn)生的實(shí)例中都有一份,并且相互獨(dú)立(修改后并不影響其他實(shí)例), 但static的數(shù)據(jù)成員則變成了每個(gè)類(lèi)只有一份,即在該類(lèi)產(chǎn)生的所有實(shí)例共享這一個(gè)數(shù)據(jù)成員, 該數(shù)據(jù)成員的改變會(huì)影響到其他的實(shí)例. 而static的方法則是讓你不用創(chuàng)建對(duì)象及能調(diào)用這個(gè)方法.

    5. ThreadLocal的作用就是將經(jīng)常要用到的對(duì)象的引用放到屬于線程自己的一個(gè)存儲(chǔ)空間中,在該線程的執(zhí)行過(guò)程中,可以通過(guò)類(lèi)的靜態(tài)的ThreadLocal來(lái)方便的獲取到這個(gè)對(duì)象,而不用通過(guò)參數(shù)的形式傳來(lái)傳去。
    posted @ 2007-12-19 14:54 比特鼠 閱讀(255) | 評(píng)論 (0)編輯 收藏

    很多高分辨率的圖像真的能夠扮靚一個(gè)Web網(wǎng)站。但是它們也可能會(huì)降低網(wǎng)站的(響應(yīng))速度——圖像都是文件,文件就要占用帶寬,而帶寬與等待時(shí)間直接相關(guān)?,F(xiàn)在是你進(jìn)行自我學(xué)習(xí),了解如何利用一種叫做圖像預(yù)加載的小技巧給網(wǎng)站提速的時(shí)候了。

    圖像的預(yù)加載

           瀏覽器通常的工作方式是:只有當(dāng)要求加載圖像的HTTP請(qǐng)求被發(fā)送的時(shí)候,圖像才會(huì)被加載,而不論它是被動(dòng)地通過(guò)<img>標(biāo)記加載,還是主動(dòng)地通過(guò)方法調(diào)用加載。所以,如果你有一段JavaScript,需要在鼠標(biāo)懸停的時(shí)候切換圖像,或者在超時(shí)之后自動(dòng)地更換圖像,那么你就可能會(huì)在從服務(wù)器取回圖像的時(shí)候隨時(shí)碰到等待,時(shí)間會(huì)從數(shù)秒鐘到幾分鐘不等。當(dāng)你以較慢的速度連接到Internet上的時(shí)候,或者被取回的圖像非常巨大的時(shí)候,這種狀況尤其顯著,而這種數(shù)據(jù)延遲通常都會(huì)毀掉你所期望的效果。

            有些瀏覽器會(huì)試圖轉(zhuǎn)嫁這一問(wèn)題,比如把圖像保存在本地緩沖區(qū)里,這樣以后對(duì)它的調(diào)用就能夠很快進(jìn)行了,但是需要第一次調(diào)用圖像的時(shí)候仍然會(huì)產(chǎn)生延遲。預(yù)加載是一項(xiàng)在需要圖像之前就把它下載到緩沖區(qū)里的技術(shù)。通過(guò)這種方式,當(dāng)真的需要圖像的時(shí)候,它可以被從緩沖區(qū)里取出來(lái),并立即顯示出來(lái)。

    Image()對(duì)象
            預(yù)加載圖像最簡(jiǎn)單的方法用JavaScript將一個(gè)新的Image()對(duì)象實(shí)例化,并把你想要預(yù)加載的圖像的URL傳遞給它。假設(shè)我們有一個(gè)叫做
    http://www.host01.com/Get/jsp/00040004/heavyimagefile.jpg的圖像,我們希望,當(dāng)用戶把鼠標(biāo)放在一個(gè)已經(jīng)顯示過(guò)的圖像上的時(shí),系統(tǒng)能夠顯示出這個(gè)圖像。為了預(yù)加載這個(gè)圖像,以便實(shí)現(xiàn)更快的響應(yīng)時(shí)間,我們只用創(chuàng)建一個(gè)新的Image()對(duì)象,將其命名為heavyImage,并使用onLoad()事件處理程序把它同時(shí)加載到頁(yè)面上。

    1 < html >< head >< script  language  = "JavaScript" > function  preloader()  {heavyImage  =   new  Image(); heavyImage.src = " http://www.host01.com/Get/jsp/00040004/heavyimagefile.jpg " ;} </ script ></ head >< body  onLoad ="javascript:preloader()" >< href ="#"  onMouseOver ="javascript:document.img01.src='http://www.host01.com/Get/jsp/00040004/heavyimagefile.jpg'" >< img  name ="img01"  src =http://www.host01.com/Get/jsp/00040004/"justanotherfile.jpg" ></ a ></ body ></ html >
    2

     

              要注意的是,圖像標(biāo)記自身并不會(huì)處理onMouseOver()和onMouseOut()事件,這就是為什么上面例子里的<img>標(biāo)記被放在一個(gè)<a>標(biāo)記里,后者的確加入了對(duì)這些事件類(lèi)型的支持。
    用數(shù)組加載多個(gè)圖像


               在實(shí)際操作中,你可能需要預(yù)加載一幅以上的圖像;例如,在包含有多個(gè)圖像翻滾(rollover)的菜單條里,或者如果你正在嘗試創(chuàng)建平滑的動(dòng)態(tài)效果。這并不困難;你所需要做的就是使用JavaScript的數(shù)組,就像下面例子里的一樣:

     

    1 < script language = " JavaScript " > function  preloader()  //  counter var i = 0; // create object imageObj = new Image(); // set image list images = new Array(); images[0]="image1.jpg" images[1]="image2.jpg" images[2]="image3.jpg" images[3]="image4.jpg" // start preloading for(i=0; i<=3; i++) { imageObj.src=images[i]; }
    2 }
      </ script >


             在上面的例子里,你先定義變量i和叫做imageObj的Image()對(duì)象。然后定義一個(gè)叫做images[]的新數(shù)組,在這個(gè)數(shù)組里,每個(gè)數(shù)組元素都保存著需要預(yù)加載的圖像來(lái)源。最后,創(chuàng)建一個(gè)for()循環(huán),讓它在數(shù)組里循環(huán),并將它們中的每一個(gè)都指派給Image()對(duì)象,這樣就能夠把它預(yù)加載到緩沖區(qū)里。
    onLoad()事件處理程序
            就和JavaScript里的其它很多對(duì)象一樣,Image()對(duì)象也帶有多個(gè)事件處理程序。這其中最有用的毫無(wú)疑問(wèn)的就是onLoad()處理程序了,它會(huì)在完成圖像加載的時(shí)候被調(diào)用。這個(gè)處理程序可以與自定義的函數(shù)一起使用,以便在完成圖像加載之后進(jìn)行特定的任務(wù)。下面的例子通過(guò)在圖像加載的時(shí)候顯示“請(qǐng)等待(please wait)”提示信息來(lái)說(shuō)明這個(gè)問(wèn)題,然后在圖像完成加載之后就向?yàn)g覽器發(fā)送一個(gè)新的URL。

     

    < html >< head >< script  language ="JavaScript" > //  create an image objectobjImage = new Image(); // set what happens once the image has loaded objImage.onLoad=imagesLoaded(); // preload the image fileobjImage.src='http://www.host01.com/Get/jsp/00040004/images/image1n.gif';// function invoked on image loadfunction imagesLoaded(){ document.location.href='index2.html';}</script></head><body>Please wait, loading images</body></html>

     


           當(dāng)然,你還可以創(chuàng)建一個(gè)圖像數(shù)組,對(duì)它進(jìn)行循環(huán),預(yù)加載每個(gè)圖像,并在每個(gè)階段對(duì)已加載圖像的數(shù)量保持跟蹤。一旦加載了所有的圖像,事件處理程序就能夠按照設(shè)定把瀏覽器帶到下一個(gè)頁(yè)面(或者進(jìn)行其他的任務(wù))。

    預(yù)加載與多狀態(tài)菜單

              現(xiàn)在,把你剛剛學(xué)到的理論付諸真正的實(shí)踐怎么樣?下面一部分內(nèi)容就是我碰巧編寫(xiě)的一段代碼——一個(gè)由多個(gè)按鈕(圖像鏈接)組成的菜單條——其中每個(gè)按鈕都可能處于三種狀態(tài)中的一種:正常(normal)、hover(懸停)和點(diǎn)擊(click)。由于所有的按鈕都有多個(gè)狀態(tài),所以就有必要使用圖像預(yù)加載來(lái)確保菜單能夠根據(jù)其切換到的狀態(tài)進(jìn)行快速的響應(yīng)。列表A里的代碼就說(shuō)了這一點(diǎn)。

               列表A里的HTML代碼會(huì)建立一個(gè)由四個(gè)按鈕組成的菜單條,每個(gè)按鈕都有三種狀態(tài):正常、懸停和點(diǎn)擊。其要求如下:

              但鼠標(biāo)移動(dòng)到處于正常狀態(tài)的按鈕上時(shí),按鈕會(huì)變?yōu)閼彝顟B(tài)。當(dāng)鼠標(biāo)移開(kāi)的時(shí)候,按鈕又會(huì)恢復(fù)到正常狀態(tài)。當(dāng)鼠標(biāo)點(diǎn)擊按鈕的時(shí)候,按鈕就會(huì)變?yōu)辄c(diǎn)擊狀態(tài)。它會(huì)一直保持這個(gè)狀態(tài),直到另外一個(gè)按鈕被點(diǎn)擊。如果有一個(gè)按鈕被點(diǎn)擊,那么其他的按鈕就都不能處于點(diǎn)擊狀態(tài)。其他的按鈕只能夠處于懸?;蛘哒顟B(tài)。一次只能有一個(gè)按鈕可以被點(diǎn)擊。一次只能有一個(gè)按鈕處于懸停狀態(tài)。
            第一項(xiàng)任務(wù)是建立保存有菜單每個(gè)狀態(tài)的圖像的數(shù)組。與這些數(shù)組元素相對(duì)應(yīng)的<img>元素也都在HTML文檔的主體里被創(chuàng)建,并按順序命名。要注意的是,對(duì)數(shù)組值的索引是從0開(kāi)始的,而相應(yīng)的<img>元素是從1開(kāi)始命名的——這就需要在腳本后面的一段里進(jìn)行某種計(jì)算上的調(diào)整。

            PreloadImages()函數(shù)會(huì)負(fù)責(zé)把所有的圖像都加載到緩沖區(qū)里,這樣的話對(duì)鼠標(biāo)移動(dòng)的響應(yīng)時(shí)間會(huì)被減到最小。一個(gè)for()循環(huán)被用在第一步里創(chuàng)建的圖像里進(jìn)行迭代,并預(yù)加載每一個(gè)圖像。

                ResetAll()函數(shù)是把所有圖像恢復(fù)都到它們正常狀態(tài)的方便方法。這是有必要的,因?yàn)楫?dāng)菜單的項(xiàng)目被點(diǎn)擊的時(shí)候,菜單里其他所有的項(xiàng)目都必須在被點(diǎn)擊項(xiàng)目能夠切換到點(diǎn)擊狀態(tài)之前恢復(fù)到正常狀態(tài)。

            SetNormal()、setHover()和setClick()函數(shù)負(fù)責(zé)把特定圖像(圖像的編號(hào)被作為函數(shù)的自變量進(jìn)行傳遞)的來(lái)源分別改為正常、懸?;蛘唿c(diǎn)擊狀態(tài)。由于被點(diǎn)擊的圖像必須一直保持點(diǎn)擊狀態(tài),直到另外一個(gè)圖像被點(diǎn)擊(見(jiàn)第二項(xiàng)要求),所以它們暫時(shí)不會(huì)對(duì)鼠標(biāo)移動(dòng)作出反應(yīng);這樣的話,如果按鈕還不是處在點(diǎn)擊狀態(tài),那么setNormal()和setHover()函數(shù)所包括的代碼就只能用來(lái)改變按鈕的狀態(tài)。

             上面所提到的預(yù)加載只是提高你JavaScript效果響應(yīng)時(shí)間的多種方法之一。就在你的網(wǎng)站上使用上面列出的技巧,并根據(jù)你的要求在需要的地方更改它們吧。祝你好運(yùn)!

    posted @ 2007-12-19 10:40 比特鼠 閱讀(255) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題  下一頁(yè)
    主站蜘蛛池模板: 日本免费人成在线网站| 日本亚洲中午字幕乱码| 日韩精品一区二区亚洲AV观看 | 9420免费高清在线视频| A片在线免费观看| 国产午夜无码精品免费看| 久久美女网站免费| 久久久久国产精品免费看| 最近免费中文字幕大全免费| 777爽死你无码免费看一二区| 99热在线免费观看| 麻豆视频免费播放| 好大好深好猛好爽视频免费| 好男人视频社区精品免费| 免费a级毛片永久免费| 国产亚洲情侣一区二区无码AV| 国产亚洲视频在线播放| 亚洲va无码手机在线电影| 亚洲国产综合专区电影在线| 亚洲精品视频久久| 亚洲人成无码网站在线观看 | 无码专区—VA亚洲V天堂| 亚洲视频欧洲视频| 亚洲熟妇少妇任你躁在线观看| 亚洲AV永久无码天堂影院| 无码AV动漫精品一区二区免费| 国产中文字幕在线免费观看| 无码国产精品一区二区免费vr| 青青视频观看免费99| 日韩精品免费一区二区三区| 亚洲情a成黄在线观看| 亚洲免费在线视频| 亚洲日本VA午夜在线影院| 亚欧洲精品在线视频免费观看| 免费在线观影网站| 日韩免费一区二区三区在线播放| 免费看AV毛片一区二区三区| 久久精品国产亚洲Aⅴ香蕉| 久久久久亚洲AV无码观看| 亚洲欧洲日产国码久在线| 国产成人无码免费看片软件|