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( ) 函数设置Cookiepp.postMessage(['SetCookie', 'JSESSIONID=ghco9xdnchph;Path=/acr'])
SetCookieDirect为下次执行 Goto( ) 函数设置Cookiepp.postMessage(['SetCookieDirect', 'JSESSIONID=ghco9xdnchph;Path=/acr'])
GotoIE内核打开页面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的交互" 就是个功能的详细演示,请自行研究。