又叫IE 扩展(Internet Explorer Extension),是一种通过使用IE的扩展机制实现的组件,该组件可以实现对现有IE功能的扩展。IE具有以下扩展方式:
上下菜单(Context menu extensions):在上下文菜单中加入自定义的菜单,以执行自定义的命令,实现IE功能的扩展。
工具栏(Toolbars):常见的IE插件就是各种IE工具栏。它是以IE工具栏的形式集成在IE中,即实现IE功能的扩展,也实现IE界面的扩展。常用的IE工具栏有百度工具栏、Google工具栏等。
BHO对象(Browser Helper Objects):这种扩展只能实现IE功能的扩展,而无法实现IE界面的扩展。
接口调用示例
开发人员在Web页面中通过window.external对象使用插件提供的控制接口。如:
int OffHookCtrl (int iChannel)
Web页面中调用方法如下:
window.external.OffHookCtrl( iChannel )
插件以通知的方式将事件报告给IE中的所有页面,页面可以选择处理还是不处理这些事件。
回调函数形式
开发人员可以指定一个页面中的脚本函数作为回调函数,当有重要事件发生时,插件会通过回调函数通知页面。
上图表示,当有事件发生时,插件会调用名为EventHanldScript的函数以通知页面。页面中脚本函数形式如下:
<script language="JavaScript">
<!--事件通知调用EventHandleScript-->
function EventHandleScript( strEventData )
{
//处理事件
var WM_CALLERID = '' + (0x0400 + 106),
WM_INDTMF = '' + (0x0400 + 101);
var event = context.match(/EventID=([\w]+)/i),
ani = context.match(/ANI=([\w]*)/i),
dnis = context.match(/DNIS=([\w]*)/i),
data = context.match(/EventData=([^\&]*)/i),
info = context.match(/DetailInfo=([^\&]*)/i);
if (!event) return;
event = event[1];
if (ani) ani = ani[1];
if (dnis) dnis = dnis[1];
if (data) data = data[1];
if (info) info = info[1];
//如果是振铃事件
if (WM_CALLERID == event && ani)
{
openPortal(ani);
……
}
}
</script>
回调函数要求有一个参数,此参数用于接收事件数据。