参考 自带例子C:\Program Files (x86)\FMSoft\Framework\uniGUI\Demos\Desktop\ClientEvents-HtmlToAjax 开始写
a01]将uniHTMLFrame1的ID传给uniGUI
a02]发送Javascript里的参数值
a03]Delphi接收参数
更深学习例子 :2.1]富文本编辑器插件summernote.js将HTML源代码返回给Delphi
4]wangEditor富文本编辑器,解决Backspace不向前删除问题
a01]将uniHTMLFrame1的ID传给uniGUI
function beforeInit(sender, config) { config.id = '_HTMLFrame'; }
<script>
var aaa;
//这里可以引用 第三方 JS 代码,只要将 最终值传回给aaa即可
aaa= 'a值'; //1 生成参数值
//如果是单个值,aaa变量都可省略,[ "val="+$('.summernote').summernote('code') ]
function callServer() { //2发送参数
ajaxRequest(Ext.getCmp("_HTMLFrame"), 'callserver', ["val="+aaa]);
}
</script>
<input type="button" value="点我,将Js值返回给Delphi" onclick="callServer()"> //通过函数名
来 连接 JS 和 Delphi
这里最重要,打通了JavaScript与Delphi之间的壁垒。如果不是在UniHTMLFrame1里,上面甚至能写成一行
'<button onclick="ajaxRequest('+UniDBGrid1.JSName+','+QuotedStr('audit')+',[''id='+Sender.DataSet.FieldByName('id').AsString+''']);">'+'  审核  </button>'
'<button onclick="ajaxRequest(' +UniDBGrid1.JSName+',' // 谁发起的 ,就在谁的Delphi里OnAjaxEvent事件里接收 + QuotedStr('audit') //通过函数名 连接JS和Delphi +',[''id='+Sender.DataSet.FieldByName('id').AsString+''']);">' //要传送的参数名和值,可以多个,以逗号分开 +'  审核  </button> '
procedure TMainForm.HTMLFrameAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings); begin UniMemo1.Lines.Clear; if EventName = 'callserver' then begin //通过函数名 来 连接 JS 和 Delphi // UniMemo1.Lines.Add(Params.Text); //所有参数 UniMemo1.Lines.Add(Params['val'].Value); //获得 指定参数的 值 //3接收 参数 end; end;
UniHTMLFrame1里的值传回给Delphi最简单例子源代码下载
链接:https://pan.baidu.com/s/1S1-MPHT3xwltjE4L7WXOGA
提取码:0lub