8

object通常,Flash 和 Flex 应用程序使用和标记的组合嵌入到 HTML 中embed,或者更常见的是使用 JavaScript。但是,如果您直接链接到 SWF 文件,它将在浏览器窗口中打开,并且不查看地址栏,您无法判断它没有嵌入到 HTML 中,其大小设置为 100% 宽度和高度。

考虑到嵌入 Flash 或 Flex 应用程序 100% 填充浏览器窗口所需的 HTML、CSS 和 JavaScript 开销,直接链接到 SWF 文件的缺点是什么?有什么好处?

我能想到一个好处和三个坏处:你不需要 100 多行 HTML、JavaScript 和 CSS,但你没有插件检测,没有版本检查,你失去了最好的 SEO 选项(渐进增强)。

更新不要挂在 100 多行上,我的意思是嵌入 SWF 所需的代码量相当多(我的意思是包括 SWFObject 之类的库),它只是用于显示 SWF,它可以通过直接链接到它而无需单行。

4

7 回答 7

7

直接链接到 SWF 文件的好处:

  • 更快的访问
  • 甚至在您点击链接之前,您就知道这是一部 Flash 电影
  • 跳过 html 和 js 文件(无论如何你都不会使用 CSS 来显示 100% flash 电影)

缺点:

  • 您几乎无法控制电影默认设置。
  • 您不能使用自定义背景颜色、透明度等。
  • 您不能使用 flashVars 从 HTML 向电影发送数据
  • 不能使用 fscommand 从电影到页面
  • 电影比例永远不会与用户窗口的纵横比相同
  • 你无法弥补浏览器的不竞争力(下一个新的浏览器出来了,你有麻烦了)
  • 没有搜索引擎优化
  • 没有页面标题,如果您希望人们正确添加书签,那就太糟糕了。
  • 没有插件信息,下载链接等。
  • 如果您的 SWF 连接到外部数据源,您可能会遇到跨域问题。
  • 重命名 SWF 文件也会重命名链接。不利于版本控制。

简而言之,对于复杂的应用程序 - 始终使用 HTML。对于一个简单的动画电影,你可以去任何一种方式。

于 2008-09-20T19:02:21.760 回答
3

您也会失去对 SWF 的外部控制。当它嵌入 HTML 时,您可以使用 javascript 与 SWF 进行通信。如果直接加载 SWF,这可能是不可能的。

您的 100 多行报价对我来说似乎很高。FlashDevelop 为嵌入 SWF 生成的 HTML 只有大约 35 行,包含一个 swfobject.js 文件。您不需要触摸 js 文件,最多只需要以非常小的方式调整 HTML 即可使其执行您想要的操作。

于 2008-09-10T13:14:39.117 回答
3

根据我的经验,并非所有浏览器都能正确处理此问题。我不太确定为什么(或哪些浏览器),但我有时会错误地将这样的链接发送给客户,他们经常会感到困惑。我怀疑他们的浏览器会提示他们下载文件而不是正确显示它。

于 2008-09-10T14:08:17.443 回答
1

我能想到的一个好处是能够在指向 SWF 的直接 URL 中指定 GET 参数,然后这些参数将在 Flash 应用程序中可用(通过Application.application.parameters在 Flex 中,不确定如何在 Flash CS3 中访问它们)。如果你有一个 HTML 包装器,当然也可以通过其他方式来实现,但这样工作量就更少了。

于 2008-09-10T14:17:08.810 回答
0

为什么需要 100 多行代码?使用类似swfobject 的东西可以减少很多(而且通常你不想手动进行插件检测等)。

于 2008-09-10T13:14:25.560 回答
0

更多优势:

  1. 轻巧的外观,因为您可以使用似乎堆积在那里的所有工具栏摆脱标题,甚至不需要滚动条。当您试图在短时间内展示大量动作时,这会增强效果。
  2. 最重要的是:您可以将它放在一个窗口中,您可以将其拖得更大或更小,并使电影变得越来越小。播放器将调整电影的大小以填满您拥有的窗口。这对于每个人都想放大以找到自己和他们的朋友的集体照片之类的东西非常有用。我已经为单帧 Flash 制作完成了此操作!

Downsides: As with popups in general, if you are asking for multiple ones from the same site, and you want different size popups, the browsers tend to simply override the size you ask for in window.open and reuse whatever is up. You need to close any open popup so the window.open will do a fresh create. It gets complicated, and I have not been able to get it to work across pages in a website. Anyone who has done this successfully, pls post how!

于 2011-10-11T17:19:20.613 回答
-1

Adobe 应该为自己的标准嵌入感到羞耻,这违背了约定优于配置的原则。检查 ^swfobject(如上所述)或swfin

于 2009-01-01T08:56:27.780 回答