1.embed is illegal The tag is a private tag of Netscape. Although the tag is widely used, from HTML3.2, HTML4.0 to XHTML1.0, W3C has not included this tag. Pages using the tag will not pass W3C validation. 2. You should use object W3C recommends the tag. Even in XHTML2, will be replaced by . The code to insert flash using the method is: if (navegiator . mimeTypes && navigator . mimeTypes["application /x-shockwave-flash"] { document . write('<embed src="test . swf" ...</SPAN> <P>This is currently a better solution. You must insert flash and use js to call it. This method can deceive the W3C verification program and make the page pass verification. But it's just "cheating", not really meeting the standards. </P> <P>How does macromedia do it? See this code: </P><SPAN class=code><!-- $RCSfile: FlashDetection2k.pm,v $ $Revision: 1.68 $ : your browser's accept header indicates you have Flash 6,0,65,0 or better, so you're OK for this Flash 6 movie, here it comes. --></span> <p>It adopts a compromise approach: </p> <ul> <li>(1). First, javascript determines your browser version and flash player version; </li> <li>(2). Dynamically generate HTML code in the background according to different versions. </li> </ul> <p>To put it simply, the <object> method is used by default. If the browser cannot handle the MIME type "application/x-shockwave-flash" of object, it inserts the sub-element <embed>. To put it bluntly, this is similar to using js to hide <embed>. It is also a "cheating" method, but this is the most standard and perfect method that can be done at present. </p> <p>If you want to really abandon <embed>, you can only wait for IE browser to have better support for <object>, maybe until Longhorn comes out. </p>