Javascript 什么';将Flash(swf)文件嵌入HTML(和XHTML)文档的最终方法是什么?
和大多数人一样,我使用SWFObject将Flash(swf)文件嵌入到我的Web项目中 如您所知:静态发布和动态发布 静态发布使用常规标记将文件嵌入到文档中,并使用JavaScript进行检查,而单用常规标记无法进行检查。这就像您的客户无法打开JavaScript一样好(搜索引擎、一些便携式设备……),文件仍然会显示(如果他们安装了正确的Flash插件)。但是,如果您有人使用传统/未打补丁的Internet Explorer(),他们将有可怕的“点击激活”与Flash交互 动态发布使用JavaScript嵌入Flash。这将消除旧IE上的“点击激活”功能,但如果JavaScript关闭,Flash将根本不存在 这两种方法都有其优点和不便之处。在一个乌托邦式的世界里,我们都会使用动态发布方法,但我们(或至少像我这样的一些人)被使用IE 6的非常旧的系统的客户困住了(他们想升级,但他们不能,因为设计糟糕的软件升级成本高达10万美元以上)。我需要支持遗留IE,并想摆脱“点击激活”功能,同时支持关闭JavaScript的用户 如何将静态发布方法与动态发布方法相结合?比如说:Javascript 什么';将Flash(swf)文件嵌入HTML(和XHTML)文档的最终方法是什么?,javascript,flash,swfobject,Javascript,Flash,Swfobject,和大多数人一样,我使用SWFObject将Flash(swf)文件嵌入到我的Web项目中 如您所知:静态发布和动态发布 静态发布使用常规标记将文件嵌入到文档中,并使用JavaScript进行检查,而单用常规标记无法进行检查。这就像您的客户无法打开JavaScript一样好(搜索引擎、一些便携式设备……),文件仍然会显示(如果他们安装了正确的Flash插件)。但是,如果您有人使用传统/未打补丁的Internet Explorer(),他们将有可怕的“点击激活”与Flash交互 动态发布使用Java
<!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>
SWFObject 2静态+动态发布示例页面
嵌入swf(“test.swf”、“myContent”、“300”、“120”、“9.0.0”、“expressInstall.swf”);
替代内容
我向一个集成人员展示了这一点,他告诉我应该使用
和
标记
将Flash嵌入Web项目的最终方式是什么?解决方案:
- 将在JavaScript关闭的情况下工作(嵌入备用内容中的Flash)
- 将通过W3C验证程序
- 将删除旧版/未修补IE上的“点击激活”
- 将使用SWFObject的闪存检测/自动安装
编辑2:我想要的答案是静态嵌入Flash的最佳方式(使用常规HTML标记)。在此基础上,我将添加动态发布。自IE 6以来,它将在所有主要浏览器中运行,并且将通过W3C验证
使用动态发布。如果用户已关闭javascript,请放弃。他们也不希望Flash运行。我过去所做的是将我的Flash内容静态地放在一个div中(使用object和embed标记),然后让SWFObject在加载时覆盖该div的内容。这将尽可能接近您想要做的事情。有没有办法让您的客户端在传统浏览器的旁边安装另一个浏览器(如Firefox),并对传统应用程序使用IE6,对您的应用程序使用FF?
<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>
var flashVars={};
var params={};
params.allowScriptAccess=“始终”;
params.allowFullScreen=false;
params.bgcolor=“#1a1a1a”;
params.wmode=“不透明”;
var atts={};
atts.id=“我的swf”;
swfobject.embeddeswf(“my.swf”、“my.swfobject”、“100%”、“100%””、“10.1.0”、“playerProductInstall.swf”、flashVars、params、atts);
如果这是你要找的,请告诉我。如果需要,我可以详细说明。你也可以考虑建议你的IE6奴隶安装谷歌浏览器框架:,我会从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>
我所看到的唯一方法是这样做:
<!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有效的。但是没有flash安装程序,也没有替换程序。这是:
<!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>
swfobject.embeddeswf('test.swf','myFlash','320','240','9.0.0','/swfobject/expressInstall.swf',0,0,0);
版本
- 我结合了
- 静态部分使用
/
将这两种方法都包含在正确的行中?如果需要,是的,但我看不到它的用途,因为你用常规标记静态嵌入Flash,并在脚本上添加功能。noscript将是无用的,因为即使没有脚本,Flash也已经存在了(如果您有plug i)