This document aims to outline common and rare situations where the use of the <object> or <embed> tags interrupt with various deployments, browsers or addons. The <object> tag offers significant advantages over the <embed> tag if you prefer to create standards-compliant code or accessible, search-engine–friendly content. [more]
Old browsers and the <embed> tag
Being the W3C recommendation, we should use the <object> tag for embedding browser plugins. Although web standards are created to avoid compatibility issues, the <embed> tag has become to "de facto" standard, that can't be ignored due to old browser versions that don't support the W3C <object> standard.
The various methods
Clean <object> tag based syntax
According to Drew McLellan, on A List Apart embedding article, one can merge attributes from both methods to create a leaner <object> syntax. Using the "The Satay Method" explained by Drew McLellan on the above article, the <object> based code is cleaner, leaner and validates as standard-compliant. However, even though the above method seems to work on most deployments, it seems that rare cases such as when the adblock firefox pluginis installed (or even when disabled?!) - <object> tag based syntax cause firefox not to render the flash movie.
Adobe’s Solution: The twice-cooked method
So to support the rare cases, the code should include the <embed> tag in addition to the <object> tag. As stated in Adobe tech note tn_4150:
The <embed> tag is for Netscape Navigator 2.0 or later, or browsers that support the use of the Netscape-compatible plugin version of Flash Player.
The twice-cooked method will makes your web pages non-standard-compliant, and can’t include a mechanism for inserting alternative content (useful for search-engines and users that don't have flash installed).
The most compatible solution: Nested <object> tags + IE conditional comments
According to the browser's Flash embed test suite by Bobby van der Sluis, the most compatible syntax, as well as the most standard-compliant is using IE conditional comments and a nested object tag. In this method, one <object> tags is placed inside the other, thus requiring a double object definition (the outer object targeting Internet Explorer and the inner object targeting all other browsers), so you need to define your object attributes and nested param elements twice. This method, however being more complex, according to Bobby's Flash embed test suitehas proven support for all of deployments.
Media and RSS readers, Facebook, MySpace and other sites - FAQ
My media player doesn't show inside Google Reader
According to the Google Reader FAQ, Google Reader is only capable of recognizing the [html][/html] syntax. In that case, please make sure your RSS include the full [html][/html] code for the media player.
Facebook or MySpace throws exceptions when clicking on the logo or other buttons