5.内嵌 IE 语法

5.1 <object>语法

<object> 的可用属性在 “使用指南\ 5.原始语法” 中已经罗列, 但是大部分属性都不需要, 您基本上只要参考前文所提的 ppapi-ie.htm 例子即可.
关键属性是 <object Core="?" ...>, 这个 Core 决定了插件是以纯 ppapi 方式运行, 还是以内嵌 IE 方式运行, 其值有 "IE"、"Pure" 二种，"IE" 就表示内嵌IE模式.
在 dynaload.js 文件中，有这个属性的设置:

    #114# ...
     str += '<param Name="CtlPara" Value="' +para+ '">';
     if($B.ppapi) str += '<param Name="core" Value="pure"><param Name="Locate" value="' +window.location.href+ '">';
     str += '</Object>';
     ...

可见 insertReport( )、insertTreeList( )... 等函数创建的插件是纯 ppapi 模式。

5.2 函数语法

作为内嵌 IE 的硕正 ppapi 插件，可用的函数一共就 3 个.

函数名 | 用途 | 示例
--- | --- | ---
SetCookie | 为下次执行 Goto( ) 函数设置Cookie | pp.postMessage(['SetCookie', 'JSESSIONID=ghco9xdnchph;Path=/acr'])
SetCookieDirect | 为下次执行 Goto( ) 函数设置Cookie | pp.postMessage(['SetCookieDirect', 'JSESSIONID=ghco9xdnchph;Path=/acr'])
Goto | IE内核打开页面 | pp.postMessage(['Goto', 'http://www.baidu.com'])

这几个函数都没有返回值.
Cookie 是必须设置的，因为 IE 和 Chrome 访问 Internet 不是用同一个底层部件, 必须靠设置 Cookie 让会话 (Session) 保持一致.
SetCookieDirect( ) 是一次性设置 Cookie, 而 SetCookie( ) 是把 Cookie 中的内容按分号分拆, 逐个内容设置.
例如 jsp 页面：

    pp.postMessage(['setcookie', document.cookie]);
    pp.postMessage(['goto', 'http://192.168.1.1:8080/works/stub/showreport.jsp']);

5.3 事件语法

同纯 ppapi, 有 OnReady 和 OnEvent 事件.
OnEvent 事件只有一个: UserEvent.
可能有这样一种需求, 内嵌 IE 的页面会要向 "外部页面" 容器发消息，比如点击了内部页面的 “确定” 按钮, 要求外部页面跳转, 或执行其它请求。
为此我们增加了一个名为 postMessageToChrome 的函数，该函数的文档在全局函数中, 如果内部页面调用该函数, 外部页面的 <object> 会收到 UserEvent 事件。
硕正报表的在线演示例子 "57.Chrome页面与内嵌IE的交互" 就是个功能的详细演示，请自行研究。