10.事件
10.1 OnReady
OnReady事件是指功能组件的实例已经成功创建后,插件/加载项通知页面的事件,它表示插件的生命周期已经开始,这样页面js就可对其作进一步的操控,例如加载数据。当然在<body>的 onLoad( ) 事件中也可以对组件进行操控,但是我们强烈建议不要写在onLoad()事件中,因为在 onLoad( ) 事件执行时,组件实例未必已创建。<script> function OnReady( id ) { AF.func('Build', 'index.XML'); } </script>插件或加载项只有经过 OnReady 触发才可用,在 OnReady 前试图调用插件的函数都是无效的,因为它的生命周期尚未开始。
<script> function OnReady( id ) { if(id=='AF1') AF1.func('Build', 'index.XML'); else if(id=='AF2') AF2.func('Build', '../index.aspx?pure=xml'); } </script>初学者常常会写错,比如写成如下这种不正确的脚本:
<script> function OnReady( id ) { AF1.func('Build', 'index.XML'); AF2.func('Build', '../index.aspx?pure=xml'); } </script>因为 AF1、AF2 会在各自生命周期开始时触发 OnReady 事件, 假如 AF1 先触发, 那么在 AF1 执行 OnReady 时, AF2 的生命周期通常还没有开始, 所以务必请注意.
... <script> function OnReady( id ) { AF.func('Build', 'myReport.XML'); } function queryReport() { AF.func('SetSource', 'ds1 \r\n servlet/do?num=12&year=2016'); AF.func('calc', ''); } </script> ... <body> <input type="button" onClick="queryReport()" value=" 查询 " > ...
10.2 OnEvent
OnEvent事件是由功能组件的某个动作触发的,例如鼠标、键盘、状态变化等,在何时抛出事件、以及事件的各个参数的含义请参考功能组件各自的文档。<script> //OnEvent参数说明: “Event”为事件名,p1,p2,p3,p4参数有特定的含义,由具体的功能组件规定. function OnEvent(id, Event, p1, p2, p3, p4) { if(Event == "SelChanged") document.getElementById('Page1').src=p2; else if(Event == "RButtonDown") AF.func("SetCellData", "1 \r\n price \r\n300"); } //注1: 控件能触发哪些事件,请参考功能组件的相关文档中的“事件”章节; //注2: 通常情况下 p1, p2, p3, p4 参数中不会包含回车符,如果里面包含了回车符,那么回车符是 "\\r\\n" 这种形式的串; </script>控件在运行过程中,会触发大量的 OnEvent 事件,您必须通过 if( ) ... else if( ) ... else if( ) ... 条件判断,筛选出您感兴趣的事件执行,就像上例中的那样。
function OnEvent(id, Event, p1, p2, p3, p4) { var xml = AF.func("GetChangedXML", ""); }事件的语法规则、以及上述示例,
对上例稍加分析,你会发现所谓 “事件” 只是普通的页面 js 函数,只不过这二个函数名被硕正插件/加载项占用了,当组件触发事件时,实际上就是由插件/加载项反向调用页面的 js 函数而已!
事件脚本应该写在页面的 <head> 中,而不应该写在 <body> 中.
硕正套件允许在创建参数中增加事件日志,使得您可以查看事件的触发情况,请详见树列表或报表的 “1.创建实例” 章节.