金蝶云星空嵌套网页与KDWebBrowser控件用法原创
金蝶云社区-limyu
limyu
29人赞赏了该文章 5,897次浏览 未经作者许可,禁止转载编辑于2021年12月07日 09:39:44


针对金蝶云星空产品二开嵌套网页的二开实例详解:


1、在BOSIDE中的窗体中拖进一个Panel面板(其属性设置充满),最好是Panel套Panel方式,最外面一个Panel设置所在窗体的位置大小,里面一个panel充满也即实际KDWebBrowse控件。

2、必须要有个构建插件,构建插件写法(在CreateControl事件里面):

if (e.ControlAppearance.Key.EqualsIgnoreCase("FPanelWebBrowse"))

 {

        e.Control["xtype"] = "kdwebbrowser";

 }

3、设置其网页网址属性:(也可以直接在上面构建插件里面写固定网址:e.control["source"]="http://…………")

this.View.GetControl("FPanelWebBrowse").SetCustomPropertyValue("IsBrowserVisible", false);

this.View.GetControl("FPanelWebBrowse").SetCustomPropertyValue("Source", "http://…………");

this.View.GetControl("FPanelWebBrowse").SetCustomPropertyValue("IsSetBrowseVisible", true);

//如果限制了宽高,需要里面嵌套的网页自动出现滚动条,需要属性放开

this.View.GetControl("FPanelWebBrowse").SetCustomPropertyValue("AutoScroll", true);



应用说明(二开必看):


1、Silvelight嵌套静态网页原理:

        Silverlight里面嵌套静态网页实际是在可视的区域嵌套了html语言的iframe标签元素,而Silverlight也是html语言的一个object元素,指的是浏览器的一个对象,因此iframe,silverlight并没有直接的联系,也就是说嵌套的静态网页不是Silverlight的一个子对象,隐藏Silverlight里面这个窗体,窗体中的静态网页始终都是显示的,所以我们随着鼠标的操作对静态网页做了实时的显示隐藏控制,体验上不佳,其iframe的相对位置是每做一个操作就会重新计算,在前端里面写了比较复杂的这个逻辑,当在过多情况下,始终都是难控制。(如二开相应嵌套网页的功能,由于体验影响可忽略在silverlight支持,WPF客户端和Html5客户端均不受影响,总部将不再支持改善该体验问题


2、cloud嵌套静态网页最理想建议做法(强烈建议)

         嵌套静态网页最好是一个独立的弹窗样式展示,也就是单据里放个按钮或者链接啥的,然后点击直接一个弹窗式的展示,这个弹窗里面只有一个静态网页,而且这个弹窗设置成浮态属性。(鼠标不能点击其下层的任何操作)。针对这一实现前端已封装出一个独立方法:


插件样例写法:

//弹窗式的打开静态网页地址

JSONObject webobj = new JSONObject();

webobj["source"] = "http://www.baidu.com";

webobj["height"] = 545;//打开窗体默认高度

webobj["width"] = 810;//打开窗体默认宽度

webobj["isweb"] = false;//为true时,在silverlight下面是以弹出浏览器窗口方式打开,注意浏览器阻拦弹窗的设置问题,为false时silverlight默认集成窗体式打开。GUI客户端不受此属性影响

webobj["title"] = "百度";

this.View.AddAction("ShowKDWebbrowseForm", webobj);

this.View.SendDynamicFormAction(this.View);


3、GUI客户端说明

        客户端嵌套网页默认是用IE8内核打开这个静态网页,所以二开自己的嵌套网页需要考虑兼容IE8下的各种脚本问题

        扩展:WPF的嵌套网页时,如何指定嵌套内核为IE11?

                  https://vip.kingdee.com/article/187971870887619072


4、关联方法案例

    1)、服务端插件直接打开某个浏览器地址

       this.View.AddAction("ShowWebURL", "http://.......");//浏览器的阻止弹窗设置允许      

       this.View.SendDynamicFormAction(this.View);

赞 29