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

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

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

    BaNg@taobao

    Just Do It!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      20 Posts :: -1 Stories :: 202 Comments :: 0 Trackbacks
    dreamweaver相信好多人都用過,但開發extension的估計不多。當初幫別人做一個cms的extension demo,在網上找資料,發現一個簡單的例子都被買3.xx歐,內心極其的憤怒,怎么能這么沒有共享精神呢?這促使我寫個入門介紹,幫那些有深入dreamweaver想法的人開個頭。萬事開頭難!

    本篇文章就是來簡單介紹一下dreamweaver extension,帶你入門,至于精通,還依賴你的更多探索。

    1 what is  dreamweaver extension? (dreamweaver以后簡稱dw)

    dw extesion是dw提供的一種擴展機制,也就是給一個機會讓你Hook到dw內部去,比如它的菜單,對話框,操作等。DW extension存在很多年了,但一直沒什么人用,那是因為設計這個dw extension的人絕對沒有經過深思熟慮,它是在大牌軟件里我見過最垃圾的一種擴展機制,大家主要是喜歡他的html editor和render。

    有心人如果打開過dw安裝目錄,就會發現很多的.js和.html文件,那些不是什么用戶手冊,他是dw構成的基礎。整個Dreamweaver就是建立在這種extension基礎上的,但因為它對外暴露的東西很少,所以dw內部的人用的滾瓜爛熟,你卻摸不著頭腦。狹義來說,extension = HTML+JS。

    2 第一個extension: hello world

    有些東西講來講去,不如一個動手來得實在。現假設你用的dw版本是mx2004--cs4。

    在繼續例子之前,首先要有一個觸發點,也就是菜單。定位到dw安裝目錄,打開configuration/menus/menu.xml,在倒數第二個menubar元素的最后一個節點,如下圖:

           

            
    <menuitem mmstring:name="menus/DWMenu_Help_About" command="dw.showAboutBox()" enabled="true" platform="win" id="DWMenu_Help_About" />
        
    </menu>
             
    <!-- 新加的菜單 -->
       

        
    <menu name="Test" id="LIFESTING_TEST">
             <menuitem name="Hello" file="Menus/Test/helloworld.htm" id="lifesting_hello_world"/>
        </menu>     

    </menubar>
    <!-- Repository view context menu. Shares strings with the VCS menu of the local file view. -->
    <menubar id="DWRepositorySiteFilesContext">
        
    <menu mmstring:name="menus/DWContext_RepositorySite" id="DWContext_RepositorySite">
         ....略

        
    </menu>
    </menubar>
    </menus>

    這個配置就是告訴dw在主菜單加一個菜單test,里面包含一個菜單項hello,它包含一個文件屬性helloworld.htm,這代表extension的界面。在menu.xml所在的目錄下建一個test目錄,里面放一個如下的helloworld.htm

    <!DOCTYPE HTML SYSTEM "-//Adobe//DWExtension layout-engine 10.0//dialog">
    <HTML>
    <HEAD>
    <Title>Hello World</Title>
    <SCRIPT SRC="hw.js"></SCRIPT>
    </HEAD>
    <BODY>
    <form name="fm1">
    <input type="text" value="Say Hi" name="btn_hi">
    </form>
    </BODY>
    </HTML>

    第一行我們沒見過很正常,稍后會講到。往下包含一個script hw.js,在dw extension中,javascript就是定義extension的行為,在helloworld.htm所在目錄建一個如下的 hw.js
    function canAcceptCommand()
    {    
        
    return true;
    }

    function commandButtons(){
        
    return new Array("Ok""sayHi()""Cancel""window.close()");
    }
    function sayHi()
    {
        window.alert(
    "Hi, "+document.fm1.btn_hi.value);
        
    }

    非常簡單的javascript,alert一個"hi,XXX".

    重新啟動 dw,就會看到效果了。dw extension跟網頁編程一樣簡單,對吧?但為什么可以這樣?



    3 extension的內部機制

    extension由htm+js構成,但dreamweaver真真切切是一個windows native程序,所以這中間必定有一個東西來把這兩者連接起來。在dw中,對應html和js的連接器分別是DW Render和Javascript Interpreter。 當你完成一個網頁,使用DW預覽的時候,DW Render就把HTML render成為了window,就如瀏覽器所做的那樣,這種render沒法定制,是DW的核心機密:)。但DW卻使用了一個開源的Javascript interpreter: SpiderMonkey,它負責解析如hw.js所寫的javascript。它對dw extension開發者來說,是公開的,我們通過編寫spidermonkey擴展,可以完成 標準html和js干不了的事情。事實上,dw就是這么干的,比如調用jvm,訪問網絡,打開外部程序等,基本都放在dw安裝目錄下的configuration/jsextensions/*.dll里面

    Part2 將會通過改造hw.js里面的sayHi,彈出的對話框將會告訴 當前系統內存的大小,如

    function sayHi()
    {
        
    var mem_size = localSystem.getMemorySize();
        window.alert(
    "Size is "+mem_size);
    }

    localSystem與window不同的是一個是標準對象,一個是我們自己加進去的對象。

    進入PART2





    posted on 2009-06-17 17:24 Always BaNg. 閱讀(1548) 評論(3)  編輯  收藏 所屬分類: Java

    Feedback

    # re: Hello, dreamweaver! (Part 1) 2009-06-17 23:31 王大力
    期待進一步的講解!  回復  更多評論
      

    # re: Hello, dreamweaver! (Part 1) 2009-06-18 14:28 Chris.Cui
    要是支持freemarker等那種DW不支持的語法高亮及可視化顯示的extension將會大受歡迎,期待。。。  回復  更多評論
      

    # re: Hello, dreamweaver! (Part 1) 2012-09-05 10:58 linkpark
    請問如何在dreamweaver中實現js和c++的交互呢?謝謝!!!  回復  更多評論
      

    主站蜘蛛池模板: 亚洲综合av一区二区三区| 女人被弄到高潮的免费视频| 国产成人亚洲精品播放器下载| 亚洲人成电影网站免费| rh男男车车的车车免费网站| 国产午夜无码精品免费看动漫| 免费在线观看视频网站| 日本特黄特黄刺激大片免费| 国产亚洲成av人片在线观看| 精品日韩99亚洲的在线发布| 精品女同一区二区三区免费播放| 国产一区二区视频免费| 亚洲视频.com| 理论秋霞在线看免费| 日韩版码免费福利视频| 亚洲精品国产精品国自产观看| 亚洲午夜视频在线观看| 99re在线免费视频| 四虎在线播放免费永久视频| 人碰人碰人成人免费视频| 久久国内免费视频| 亚洲人片在线观看天堂无码| 免费a级毛片大学生免费观看| 亚洲性69影院在线观看| 国产色无码精品视频免费| 国产最新凸凹视频免费| 亚洲砖码砖专无区2023| 亚洲国产日韩成人综合天堂| 黄色免费在线网站| 国产精品高清视亚洲一区二区 | 在线精品一卡乱码免费| 国产亚洲精品岁国产微拍精品| 日韩免费高清大片在线| 亚洲人成自拍网站在线观看| 亚洲成A人片在线观看中文| 国产精品亚洲专区无码唯爱网| 91成人在线免费视频| 亚洲狠狠久久综合一区77777| 一二三四免费观看在线电影 | 亚洲精品免费观看| 国产免费观看青青草原网站|