More precise and cross-browser async method through postMessage