通常,Flash 和 Flex 应用程序使用以下组合嵌入到 HTML 中: objectembed 标签,或更常见的是使用 JavaScript。但是,如果您直接链接到 SWF 文件,它将在浏览器窗口中打开,并且无需查看地址栏,您就无法判断它没有嵌入到尺寸设置为 100% 宽度和高度的 HTML 中。

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

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

更新 不要纠结于这 100 多行,我只是说嵌入 SWF 所需的代码量相当多(我的意思是包括像 SWFObject 这样的库),而且它只是为了显示 SWF,这可以通过直接链接到它,无需一行即可完成。

有帮助吗?

解决方案

直接链接到 SWF 文件的优点:

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

缺点:

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

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

其他提示

您还会失去对 SWF 的外部控制。当它嵌入到 HTML 中时,您可以使用 javascript 与 SWF 进行通信。如果直接加载 SWF,则可能无法实现。

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

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

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

为什么需要 100 多行代码?使用类似的东西 swf对象 减少了相当多的数量(通常你不想进行插件检测等。无论如何用手)。

更多优点:

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

缺点:与一般的弹出窗口一样,如果您从同一站点请求多个弹出窗口,并且需要不同大小的弹出窗口,则浏览器往往会简单地覆盖您在 window.open 中请求的大小并重用任何内容。您需要关闭所有打开的弹出窗口,以便 window.open 进行全新创建。它变得很复杂,而且我无法让它在网站中跨页面工作。谁成功完成此操作,请发布如何操作!

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top