Chart instances are executed in the Gateway scope, which means they can't interact with a client in the typical way. Instead, they need to use message handlers to send information to the client. From a chart, we can use system.util.sendMessage to call a client message handler, which can then interact with the client in some way. This may range from altering something on the window to requesting user input.
The client can then call system.sfc.setVariable to write back to the chart if necessary, allowing the chart to continue if it was waiting for the input.