实际上有一种方法......花了很多时间分析发生了什么......终于找到了一种在TOP
框架和PLUGIN
框架之间交换配置的好方法,只需几行代码,利用 onlyoffice API - 没有任何黑客:)
编辑器配置对象:
config: {
"width" : "100%",
"height" : "100%",
"type" : "desktop",
"documentType": "text",
"token" : "{{token}}",
"document" : {
"title" : "{{document.name}}",
"url" : "{{downloadUrl}}",
...
events: {
'onReady': <application ready callback>, // deprecated
...
'onInfo': function ( data ) {
if ( data && data.data && data.data.getConfig ) {
docEditor.serviceCommand ( 'getConfig', config.document );
}
}
}
}
var docEditor = new DocsAPI.DocEditor("placeholder", config);
onInfo
事件将收到来自您插件的请求。需要检查事件数据有getConfig
属性。如果是这样,请将配置发送回插件。
在您的插件中index.html
添加包含以下内容的内联脚本标签:
// config ref
var config;
// Get ready to receive the response from TOP
window.parent.Common.Gateway.on ( 'internalcommand', ( data ) => {
if ( data.command === 'getConfig' ) {
config = data.data;
}
} );
// Send custom config request to TOP
window.parent.Common.Gateway.sendInfo ( { getConfig: true } );
它订阅internalcommand
将被调用的网关事件,然后通过调用命令TOP
启动通信过程。sendInfo
因为编辑器和您的插件(很可能)将托管在同一个域上,所以您可以通过window.parent
ref 访问它。
这将下载config.document
配置对象并将其自动存储在插件本地config
变量中 - 当您单击工具栏中的插件时。