修改window.external使JS可呼叫Delphi方法
阿新 • • 發佈:2019-01-07
在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