We love eValid but we had a problem in synchronizing. Your suggestions were great, but we have made it much simpler and it seems to be quite stable.
Our architect has added a clever span element to the page that changes from a runtimeStatus of 'loading' on page initialize to a status 'initialized' after completion of the last JS.
It has a fixed index so now I simply check that status until the sync = true. Like so:
SyncOnSelectedObjProperty 0 18 "id" "__runtimeStatus" "innerText" "initialized" ""
Works a treat.
What do you think?