This example shows how to call a JavaScript function with the "call" front call
The form file: wc_echo.per
ACTION DEFAULTS
ACTION data_available(DEFAULTVIEW=NO)
END
LAYOUT
GRID
{
[data ]
[ ]
[ ]
}
END
END
ATTRIBUTES
WEBCOMPONENT data = formonly.data,
COMPONENTTYPE="wc_echo",
STRETCH=BOTH;
END
The HTML file: wc_echo.html
<!DOCTYPE html> <html> <head> <title>The title</title> <script language="JavaScript" type="text/javascript" src="wc_echo.js"></script> </head> <body> <div style="background-color:green;width:3000px;height:3000px;" > here </div> </body> </html>
The JavaScript file: wc_echo.js
function echoString(str) {
return str;
}
function echoObject(ostr) {
var o = JSON.parse(ostr);
// do something and return back
return JSON.stringify(o);
}
onICHostReady = function(version) {
if ( version != 1.0 )
alert('Invalid API version');
gICAPI.onProperty = function(p) {
var myObject = eval('(' + p + ')');
if (myObject.url!="") {
setTimeout( function () {
downloadURL(myObject.url);
}, 0);
}
}
}
The program file: wc_echo.4gl
MAIN
OPEN FORM f FROM "wc_echo"
DISPLAY FORM f
MENU "test"
COMMAND "echo"
CALL echo()
COMMAND "exit"
EXIT MENU
END MENU
END MAIN
FUNCTION echo()
DEFINE a,title,ut STRING
TRY
CALL ui.Interface.frontCall("webcomponent","call",
["formonly.data","eval","Math.floor(5/2)"],[ut])
CALL ui.Interface.frontCall("webcomponent","getTitle",
["formonly.data"],[title])
CALL ui.Interface.frontCall("webcomponent","call",
["formonly.data","echoString","hello"],[a])
MESSAGE "ut:",ut,",a:",a,",title:",title
CATCH
ERROR err_get(status)
END TRY
END FUNCTION