修改window.external使JS可調用Delphi方法

原文地址:http://hi.baidu.com/rarnu/blog/item/4ec80608022766d663d986ea.html

在JS中,有一個比較特殊的對象,即window.external,用它可以調用瀏覽器提供的外部方法
一個很簡單的例子就是將當前頁添加到收藏夾
window.external.addFavorite("http://blog.csdn.net/youthon","弘石的博客');
這樣寫腳本就可以了。
那麼如果我想自己定義external,以便在自己的軟件內使用IE核心的瀏覽器作爲UI容器,該如何做呢?
本文即是解決此問題。
一、製作TLB
在File | New | Other 菜單下,選擇新建一個Type Library,這個嚮導在ActiveX頁內。
然後按下圖所示,新建一個接口,在接口下新建一個DoSearchData方法,這個方法即是將來需要添加到external中的。


完成添加後,點擊保存爲TLB按鈕,將生成一個TLB文件,此處我將它命名爲GetData.tlb
二、實現IDocHostUIHandler接口
這部分相對比較簡單,從MSDN上找到相關的C++代碼,把它轉換成Delphi的即可。代碼如下:
 unitDocHostUIHandler;

 interface
 uses
 Windows, ActiveX;
 const
 DOCHOSTUIFLAG_DIALOG                     =$00000001;
 DOCHOSTUIFLAG_DISABLE_HELP_MENU          =$00000002;
 DOCHOSTUIFLAG_NO3DBORDER                 =$00000004;
 DOCHOSTUIFLAG_SCROLL_NO                  =$00000008;
 DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE    = $00000010;
 DOCHOSTUIFLAG_OPENNEWWIN                 =$00000020;
 DOCHOSTUIFLAG_DISABLE_OFFSCREEN          =$00000040;
 DOCHOSTUIFLAG_FLAT_SCROLLBAR             =$00000080;
 DOCHOSTUIFLAG_DIV_BLOCKDEFAULT           =$00000100;
 DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY    = $00000200;
 DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY    = $00000400;
 DOCHOSTUIFLAG_CODEPAGELINKEDFONTS        =$00000800;
 DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8  = $00001000;
 DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8   = $00002000;
 DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE  = $00004000;
 DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION  = $00010000;
 DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION    = $00020000;
 DOCHOSTUIFLAG_THEME                      =$00040000;
 DOCHOSTUIFLAG_NOTHEME                    =$00080000;
 DOCHOSTUIFLAG_NOPICS                     =$00100000;
 DOCHOSTUIFLAG_NO3DOUTERBORDER            =$00200000;
 DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章