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

一、应用场景:

嵌套网页与金蝶云星空进行数据交互,例如:在被嵌套网页中,点击一个按钮,需要把数据发送到金蝶云星空系统当中,并且,星空系统接收发过来的数据,同时会触发表单插件事件。

二、实现场景的前准备

1、嵌套的网页需利用星空系统的嵌套原理实现方法,进行表单开发并且成功嵌套网页,详细请参照文章:https://vip.kingdee.com/article/13073,该原理是利用kdwebborwser控件在表单中实现嵌套网页,才能进行成功触发当前表单插件

2、如嵌套网页初始打开时,需要星空系统的一些数据,可以在第一点中介绍的表单插件中设置source时,将数据通过url地址参数进行传入(简单实现即可),如嵌套打开网址:http://......../...../?pageid=xxxx&formid=xxxx...

三、实现嵌套网页发送数据至星空系统表单样例

嵌套网页中实现脚本:

1、嵌套网页中需实现定义当前浏览器的postmessage机制(可查资料),简单实现脚本实例:

(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;

})();

2、如:页面绑定一个按钮点击事件:

$(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);

});

});

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);

DynamicFormShowParameter ShowPara = new DynamicFormShowParameter()

{

FormId = "BOS_YunZhiJiaClub",

//PageId = System.Guid.NewGuid().ToString(),

PageId = Guid.NewGuid().ToString(),

ParentPageId = this.View.Context.ConsolePageId

};

ShowPara.OpenStyle.ShowType = ShowType.MainNewTabPage;

ShowPara.OpenStyle.TagetKey = "FMainTab";

ShowPara.CustomParams.Add("openurl", data.GetValue("openurl", ""));

ShowPara.Caption = data.GetValue("title", "");

this.View.ShowForm(ShowPara);

}

}

4、以上可在Html5端和Silverlight均可实现,但是WPF客户端嵌套网页时,无浏览器Postmessage机制,所以要在客户端中实现,

1)、在星空表单插件的AfterBindData事件中开启客户端时的获取嵌套网页脚本数据机制

if (this.View.Context.ClientType == ClientType.WPF)

{                       this.View.GetControl("FPanelWebBrowse").InvokeControlMethod("StartTime", 500);

}

2)、嵌套网页脚本中需实现2个方法:

function getpostmessageargs() {

if (window._$postmessageargs)

return window._$postmessageargs;//一定是字符串类型而不是object或者fuc类型,仔细看3.2中的代码

return "";

}

function clearpostmessageargs(param) {

if (window._$postmessageargs) {

window._$postmessageargs = "";

}

}

四、扩展,星空插件调用嵌套网页中的方法,(目前只实现Html5端,如三端均支持,将继续更新文章)

金蝶云星空html5的网页主界面如何修改,金蝶云星空系统与嵌套网页进行交互实现详解...相关推荐

  1. 金蝶云星空html5的网页主界面如何修改,金蝶云苍穹如何设置页面插件?

    注册方式 注册JAVA插件 注册JavaScript插件 实现方式 Java实现方式 实现步骤 新建插件类 package kd.bos.form.plugin; import java.math.B ...

  2. 如何使用Bootstrap制作网页主界面、增加界面

    今天使用Bootstrap做了一个网页的主界面和增加界面 先导入Bootstrap文件包 报错没有问题只是编译器识别出了问题 ,没有影响 并且在项目中编写导入语句 这是这次web项目所用到的文件 * ...

  3. Struts2项目实战 微云盘(六)主界面UI

    一.本节说明 进入github下载本项目(开源) 本节实现的是主界面UI 二.AJAX请求 在使用Jquery前先确认正确的引入了jquery. 1.获取文件结点 当文档加载完成后需要获取到用户根目录 ...

  4. 初学者-如何使用bootstrap框架设计一个简单的网页主界面HTML+CSS+Bootstrap

    自己也刚刚开始接触框架,在学习了bootstrap框架过后,练习写了一个简单的主界面,主界面的图如下: 这个页面主要用的bootstrap的栅格系统进行整体布局,网页效果简约大方,最重要的是比较简单吧 ...

  5. python制作好看的界面_【一点资讯】Python界面如何漂亮的展示树形结构,PyQt5控件之QTreeWidget详解 www.yidianzixun.com...

    前面内容,我们介绍了关于PyQt5的一些常用高级控件的使用,为了更好的便于大家理解,我们通过一些案例进行了讲解.用户接口 用Python将电子表格Excel展示在界面中,PyQt5之QTableWid ...

  6. 网页访问服务器默认什么端口号,URL中没有端口号默认为80?详解IT产品必须熟知的访问地址概念!...

    原标题:URL中没有端口号默认为80?详解IT产品必须熟知的访问地址概念! 作为一个互联网产品经理,你可能每天打开几十个网页,但你有没有观察过他们的网址? 作者带你庖丁解牛并把网址拆开.标准URL地址 ...

  7. 使用Bootstrap制作网页主界面、增加界面

    上期讲了什么是Bootstrap,可以回顾一下哦(*╹▽╹*) Web开发之[Ajax][Bootsrtap]省市联动与无刷新分页_小阿飞_的博客-CSDN博客你会做省市联动和无刷新分页功能吗

  8. Tkinter模块GUI界面化编程实战(六)——超级游戏盒子(含超详解及完整源码、完整程序免费下载链接)

    [上期回顾:Tkinter模块GUI界面化编程实战(五)--大鱼吃小鱼游戏] 这篇博客介绍了如何用Python Tkinter模块编写一个界面化的超级游戏盒子,在博客下面有完整的源码,源码中有详细的注 ...

  9. html5才有的标签是什么意思,html5header标签是什么意思?html5header标签的用法详解(附实例)-...

    本篇文章主要的向大家介绍了关于html5 header标签的元素的基本介绍,和header标签的用法实例解析.下面就让我们一起来看看这篇关于html5 header标签的文章吧 一.首先我们来说说ht ...

最新文章

  1. python课程费用-深圳python课程费用
  2. Codeforces Round #191 (Div. 2)
  3. access 提供程序无法确定object 值_Python | 加一行注释,让你的程序提速10+倍!numba库十分钟上手指南...
  4. CentOS6挂载读写NTFS分区(ntfs-3g)
  5. softmax实现cifar10分类
  6. 垃圾回收机制和菜单栏工具栏
  7. nonzero的用法一则例子
  8. 使用 Source Generator 代替 T4 动态生成代码
  9. PyPA Installing Packages
  10. Python学习week4-set集合
  11. OSSIM5 自定义安装
  12. clickhouse语句_Siem落地方案:初识clickhouse
  13. 【Python ASCII码转换】——制作ASCII码转换程序,并打包为应用程序
  14. TwinCAT学习笔记3--创建PLC程序控制2台EtherCAT变频器
  15. Java环境变量配置与adb环境变量配置
  16. kalman滤波理解一:理论框架
  17. python 按照四个点的坐标裁剪不规则四边形
  18. 使用vba进行excel超链接设置(链接到当前文档某一单元格)
  19. css小鸡破壳,小班美术教案《小鸡破壳》
  20. 周志华机器学习:决策树

热门文章

  1. 文史上最骚的编程语言来了!大四学生发明言文编程语言!秀的我头皮发麻
  2. 如何从零开始搭建智能外呼系统
  3. 《世界历史》学习记录
  4. 时间戳是从什么时候开始的?
  5. OM1、OM2、OM3、OM4、OM5 和 OS1、OS2 光纤
  6. 先来先服务算法(FCFS)C语言超详细,小白可入
  7. 终于有人把SDH、MSTP、OTN和PTN的关系解释清楚了……
  8. PHP 实现汉字转化拼音的函数
  9. PyTorch笔记 - Attention Is All You Need (4)
  10. 电子元器件知识及术语资料下载