金蝶云星空系统与嵌套网页进行交互实现详解

金蝶云星空系统与嵌套网页进行交互实现详解
一、应用场景:
嵌套网页与金蝶云星空进行数据交互,例如:在被嵌套网页中,点击一个按钮,需要把数据发送到金蝶云星空系统当中,并且,星空系统接收发过来的数据,同时会触发表单插件事件。
二、实现场景的前准备
1、嵌套的网页需利用星空系统的嵌套原理实现方法,进行表单开发并且成功嵌套网页,详细请参照文章:https://vip.kingdee.com/article/13073,该原理是利用kdwebborwser控件在表单中实现嵌套网页,才能进行成功触发当前表单插件
2、如嵌套网页初始打开时,需要星空系统的一些数据,可以在第一点中介绍的表单插件中设置source时,将数据通过url地址参数进行传入(简单实现即可),如嵌套打开网址:http://......../...../?pageid=xxxx&formid=xxxx...
三、实现嵌套网页发送数据至星空系统表单样例
嵌套网页中实现脚本:
1、嵌套网页中需实现定义当前浏览器的postmessage机制(可查资料),简单实现脚本实例:
<script>
(function () {
var _formatOrigin = (function () {
var _reg = /^([\w]+?:\/\/.*?(?=\/|$))/i;
return function (_origin) {
_origin = _origin || '';
if (_reg.test(_origin)) {
return RegExp.$1;
}
return '*';
};
})();
var _$postMessage = function (r, data) {
var e = window.name || "_parent",
t = { _top: window.top, _self: window, _parent: window.parent };
r = t[r];
if (!r)
return;
var a = { data: null, origin: "*", source: r };
r.postMessage(JSON.stringify(data), _formatOrigin("*"));
};
window._$postMessage = _$postMessage;
})();
</script>
2、如:页面绑定一个按钮点击事件:
<script>
$(document).ready(function () {
$("#Button1").bind('click', function () {
var n = {};
n.pageid = "1222232323"; //pageid必须要携带数据,用于星空识别触发单据的表单插件,来源可参考2.2
n.putdata = {};//自定义数据对象
n.putdata.title = "测试";
n.putdata.openurl = "TempfilePath/testsendurl.html";
window._$postmessageargs = JSON.stringify(n);
window._$postMessage("_top", n);
});
});
</script>
3、上面2个实例即可实现嵌套网页将数据传入星空系统并且星空触发表单插件,如:表单接受嵌套post过来的数据,打开某个一个表单
public override void CustomEvents(Core.DynamicForm.PlugIn.Args.CustomEventsArgs e)
{
if (e.Key.EqualsIgnoreCase("$$MessageCustomerEvent") && e.EventName.EqualsIgnoreCase("$$MessageCustomerEvent"))
{
JSONObject data = JSONObject.Parse(e.EventArgs);
Dynami
金蝶云星空系统与嵌套网页进行交互实现详解
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



