昨天在进行gMIS的功能开发时梳理了一些情况,记录如下,供以后gMIS开发及在其上的二次开发参考。
该次开发主要是为gMIS引入可视化编辑器的任务。
1.
在gMIS的设计中,特殊I/O应该走extra目录,使用外挂的方式进行非常规的输入和输出操作。在本次可视化编辑器的探索中,一开始走了弯路,在字段上,显示尝试了UEditor,KindEditor和XhEditor,均告失败,由于gMIS的特殊结构,这些成熟的编辑器也无法在其中顺利运行。
在这个思路上走得更远的是,自行改制了 UFQIEditor, UFQIEditor相对于其他编辑器来说,精炼了很多,改制完成后,尝试将其嵌入到gMIS中调试时,发现也不行,程序中,连window,document等基本的JavaScript运行和操作DOM的基本环境都没有。
这个方向看来真的有问题。于是赶紧撤出来,使用“特殊I/O走extra目录”来处置的思路。
在window.open和iframe两种方式对比中,选择使用iframe方式。
2.
gMIS严重依赖GTAjax,经由GTAjax通信的页面,其中的JavaScript程序基本无法得到准确执行。这主要是因为GTAjax中大量使用iframe方式递交用户的请求,iframe本身会构造一个全新的document对象,因此通过GTAjax带来的JavaScript的执行,也只是在iframe内部,如果要通过在iframe内部的JavaScript来改变当前页面的行为或者状态,就需要使用parent之类的窗口继承关系。
3.
gMIS只有一个HTML页面运行环境,所有的操作都在一个HTMLObject中进行,这为程序的运行提供了便利,在处理复杂问题时,也容易导致问题,需特别注意。
这个HTMLObject的组成包括:
HTML —- 通过GTAjax 方式 include进来一个 ido的内容文件 —- 在ido的元素上做进一步的操作 —- 后台程序jdo负责处理这些操作,对其应答 —- 循环往复….