I am curious about the pros and cons of using user agent detection in a web server to determine which version of a JavaScript resource to send to the client.
In particular, if some web browsers support a feature natively while others require a verbose JavaScript workaround, is it better to serve the workaround to everyone and run it only if it's needed client-side, or to serve the workaround only to the browsers that require it and send a thin wrapper around native features to the rest?
What problems could arise with that second approach, and might they outweigh the benefit of smaller responses for the supporting browsers?
The userAgent property returns the user-agent header sent by the browser to the server. The userAgent property is read-only. The value returned, contains information about the browser name, version and platform. The web specification suggests that browsers should provide as little header information as possible.
AppleWebKit/537.36 indicates what browser rendering engine is used. A rendering engine is what transforms HTML into an interactive webpage on the user's screen. The WebKit browser engine was developed by Apple and is primarily used by Safari, Chromium, and all other WebKit-based browsers. (KHTML, like Gecko).
A user agent is any software that retrieves and presents Web content for end users or is implemented using Web technologies. User agents include Web browsers, media players, and plug-ins that help in retrieving, rendering and interacting with Web content.
User Agent Server (UAS) is a Voice over Internet Protocol (VoIP) application that responds to User Agent Client (UAC) service requests based on input or other external stimuli in Session Initiation Protocol (SIP) systems.
You could load "optional" stuff on demand using RequireJS
(or similar).
1) On Page load... test for feature with small tests (Modernizr)
2) If test succeeds, use native, if fails, use RequireJS to load your other resources
3) Profit.
This does assume you don't mind extra http requests....too many of these test, load, repeat processes can slow things down more than just including one large(r) file, so it's case dependent, but there is definitely reasonable middle ground...
Usually, it is a better solution to send one copy of your javascript to all clients and have the javascript itself do feature detection to decide how to best treat each browser. This has the following advantages:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With