2.ppapi 原始语法


2.1 函数语法

  相对于 IE、npapi 的 func( ) 函数, 对应到 ppapi 中是 postMessage( ) 或 postMessageAndAwaitResponse( ) 消息函数。
  postMessage( )的函数原型是:[object 的 id].postMessage( json 对象), 因为是异步的消息, 所以没有返回值.
  postMessageAndAwaitResponse( )的函数原型和 postMessage( ) 相似, 但它是线程阻塞(block)等待的,有返回值.
  函数名是大小写敏感的, 函数的参数是一个 javascript 对象, 硕正 ppapi 对这个参数对象的成员是有要求的,并有 3 种兼容的书写方案.
语法一: 对象包含 func、para, 例如:
var para = {func: 'GetCellData',  para: 'A1'};
var data = AF.postMessageAndAwaitResponse(para);

语法二: 参数对象是字符串数组, 例如:
var para = ['GetCellData',  'A1'];
var data = AF.postMessageAndAwaitResponse(para);
  执行的效果和语法一完全一样.
  回顾一下前面的 “1.关于 ppapi” 的例子,就是采用了这种写法:
AF.postMessage(['SetSource', 'reportdata/datacenter.xml']);
AF.postMessage(['Build', 'report/htmltable4.xml']);

语法三: 参数对象是一个字符串, 以回车符分隔函数名和参数,例如:
AF.postMessage('SetSource \r\n reportdata/datacenter.xml');
AF.postMessage('Build \r\n report/htmltable4.xml');

2.2 事件语法

  相对于 IE、npapi 的 OnReady、 OnEvent 事件入口, ppapi 只有一个事件入口,即事件侦听回调函数, 通过 addEventListener 绑定插件, 前面已经提到。
  回调函数是有一个参数的的, 如前面的 function handleMessage(message), message 是一个 json 对象,里面的 message.data 对象提供了所有您想要的内容。
  message.data.name 成员,是事件的类型:
function handleMessage(message) {
 if(message.data.name == "OnReady") {
  //相当于 IE、npapi 中的 OnReady( )
 }
 else if(message.data.name == "OnEvent") {
  //相当于 IE、npapi 中的 OnEvent( )
 }
}
  message.data 中还有其它成员, 下面的表格是其成员的详细说明.
事件类型
(message.data.name)
message.data 成员名含义
OnReady(无)(无)
OnEventmessage.data.event事件名, 诸如 "SelChanged"、"Clicked"
message.data.p1相当于 IE、npapi 的 p1 参数
message.data.p2相当于 IE、npapi 的 p2 参数
message.data.p3相当于 IE、npapi 的 p3 参数
message.data.p4相当于 IE、npapi 的 p4 参数