I have selected a couple of the best Practices but to read the full list go to the article
Microsoft have also created best practices for different versions, links to below to the different pages
There are a lot of best practices and it’s a really good article, but below are my top 4 best practices from the article. I would definitely recommend you read the different articles.
Use Feature Detection When Writing Functions for Multiple Browsers
Even when you use a cross-browser library like jQuery, you need to be very aware of differences between browsers. You can generally detect which browser is being used by querying thenavigator.useragent property. This is called browser detection. Browser detection is not a good strategy for most cases because it can’t take into account what features newer versions of a browser have. Also, some browsers provide the capability to modify the navigation.useragent property so that they appear to be a different browser.
Feature detection is the recommended approach. By detecting what features are available, you can create code paths for the browsers you support without knowing exactly which browser is being used. For more information about feature detection, see How to Detect Features Instead of Browsers.
Use Asynchronous Data Access Methods
When you access data by using the Microsoft Dynamics CRM web services that use the REST or SOAP endpoint for web resources, always use an XMLHttpRequest that is configured to execute asynchronously. The reason is that the browser operates on a single thread. If that thread is being used to execute a long-running process synchronously the browser will stop responding.