On Android that issue can be very nasty also on the separate Chrome WebView (or maybe it was, I do not know if now it is fixed), so the only workaround is taking into account what really happens.
It is mainly because the two methods are not always called in the same order.
And nothing prevents the WebView from firing again for no reason shortly after, so it can happens more than twice. I think this is/was a bug.
I can say what I am doing in my CodenameApp:
I have a class boolean variable, like onLoadEventAlreadyCalled. One different variable has to be used for each BrowserComponent.
I have two BrowserComponents in two different classes.
The trick is to set the boolean to false
each time
a method is called that can originate a "onLoad" event (case sensitive or use BrowserComponent.onLoad const),
then in the listener (addWebEventListener) have:
if (onLoadEventAlreadyCalled) return;
onLoadEventAlreadyCalled=true;
It is important to set the boolean to false before calling any methods that can originate the event because otherwise the code will be executed only the first time.
So it depends on your implementation. I experienced two events, so what method are you using? It could be that the same method is being called twice, as I said.
Regards