与大多数人一样,我使用SWFObject将Flash(swf)文件嵌入到我的Web项目中。
如您所知SWFObject offers 2 ways to embed Flash:静态发布和动态发布。
静态发布使用常规标记将文件嵌入到文档中,并使用仅使用常规标记无法进行的JavaScript检查。这很好,好像你有无法打开JavaScript的客户(搜索引擎,一些便携式设备......),文件仍会显示(如果他们安装了正确的Flash插件)。但是如果你有遗留/未修补的Internet Explorer(between April 2006 and April 2008)上的人,他们将有可怕的“点击激活”与Flash进行交互。
动态发布使用JavaScript嵌入Flash。这将摆脱旧IE上的“点击激活”功能,但如果JavaScript关闭,Flash将根本不存在。
这两种方法都有其优点和不便之处。在一个乌托邦世界中,我们都会使用动态发布方法,但是我们(或者至少我们中的一些人)喜欢使用IE 6的旧系统(他们想要升级,但他们不能因为非常糟糕)设计软件,升级费用为10K + $)。我需要支持旧版IE,并希望摆脱“点击激活”功能,同时支持关闭JavaScript的人。
如何合并静态和动态发布方法?怎么样:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>SWFObject 2 static+dynamic publishing example page</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("test.swf", "myContent", "300", "120", "9.0.0", "expressInstall.swf");
</script>
</head>
<body>
<div id="myContent">
<object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="300" height="120">
<param name="movie" value="test.swf" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="test.swf" width="300" height="120">
<!--<![endif]-->
<div>
<h1>Alternative content</h1>
<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
</body>
</html>
我向集成商展示了他,他告诉我应该使用<object>
和<embed>
代码......
将Flash嵌入Web项目的最终方式是什么?解决方案:
编辑:添加了赏金。请,我不希望看到“不要打扰现在没有人关闭JavaScript”或“如果javascript关闭,很可能Flash也会关闭”等答案。
编辑2:我正在寻找的答案是静态嵌入Flash的最佳方式(使用常规HTML标记)。在此之后,我将添加动态发布。自IE 6以来可以在所有主要浏览器中使用的like this,它将通过W3C验证。
答案 0 :(得分:4)
<head>
<script src="//ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script>
var flashVars = {};
var params = {};
params.allowScriptAccess = "always";
params.allowFullScreen = false;
params.bgcolor = "#1a1a1a";
params.wmode = "opaque";
var atts = {};
atts.id = "my-swf";
swfobject.embedSWF("my.swf", "my-swfobject", "100%", "100%", "10.1.0", "playerProductInstall.swf", flashVars, params, atts);
</script>
</head>
<body>
<div id="my-swfobject">
<!-- Any <object></object>, <embed></embed>, and everything else here will be rendered for users without JavaScript. If JavaScript is on, SWFObject will destroy div#my-swfobject and replace it with object#my-swf. -->
</div>
</body>
如果您正在寻找,请告诉我。如果需要,我可以详细说明。您可能还会考虑建议您的IE6从属设备安装Google Chrome浏览器内嵌框架:http://code.google.com/chrome/chromeframe/
答案 1 :(得分:2)
这是:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title></title>
<script type="text/javascript" src="swfobject.js"> </script>
<script type="text/javascript">
swfobject.embedSWF('test.swf', 'myFlash', '320', '240', '9.0.0', '/swfobject/expressInstall.swf', 0, 0, 0);
</script>
</head>
<body>
<div>
<object id="myFlash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="320" height="240">
<param name="movie" value="test.swf">
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="test.swf" width="320" height="240">
<!--<![endif]-->
<p>Version ???</p>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
</body>
</html>
答案 2 :(得分:1)
我过去所做的是静态地将我的flash内容放在div中(使用object和embed标签),然后让SWFObject在加载时覆盖该div的内容。这将与您想要做的一样接近。
答案 3 :(得分:0)
使用动态发布。如果用户关闭了javascript,请放弃。他们也不希望Flash运行。
答案 4 :(得分:0)
有没有办法让你的客户安装另一个浏览器(如Firefox)和他们的旧浏览器,并使用IE6作为遗留应用程序和FF为你的?
答案 5 :(得分:0)
我会从YouTube等允许嵌入Flash的网站中获取提示。不确定这是否适用于非“电影”类型。
来自YouTube:
<object width="[width]" height="[height]">
<param name="movie" value="[Path to SWF]"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="[Path to SWF]" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="[width]" height="[height]"></embed>
</object>
答案 6 :(得分:0)
我看到的唯一方法是做这样的事情:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>test</title>
</head>
<body>
<p>
<object width="160" height="112" data="movie.swf" type="application/x-shockwave-flash">
<param name="movie" value="movie.swf" />
</object>
</p>
</body>
</html>
我认为没有更好的选择。这将适用于IE,Mozilla和Webkit浏览器,并且xhtml有效。但没有闪存安装程序,也没有替换。