1) Gestures are currently not supported. But we have added this on our feature request list for investigation.
2) For iOS you can get the selected text through javascript:
var
s: String;
begin
s := TMSFMXWebBrowser1.ExecuteJavascript('window.getSelection().toString();');
For Android, the selection cannot be retrieved using javascript because the native webbrowser doesn't expose functionality for this. We have added this on our feature request list for further investigation.
3) Customizing the context menu requires a significant amount of javascript injection. There is also no support for this as this is a very specific request.
There is no separate event when the selection changes. the TTMSFMXWebBrowser is a wrapper around the native webbrowser that exposes basic functionality such as executing javascript, loading and navigating to an URL, going to the previous and next page. There is currently no support for such specific functionality.
If you have an online reader the best approach is what you are currently using (with the TTMSFMXWebBrowser). For the selection change event, you can use the OnBeforeNavigate event and the OnNavigateComplete events and redirect the browser to an URL when selection changes. (set the Window href URL to an url scheme such as "selectionevent://..." then you can parse the URL and return a false to block navigation and stay on the current page. The selection changed event cannot be separately handled inside the TTMSFMXWebBrowser.