在服务器端测试Flash功能

时间:2009-05-24 05:04:55

标签: asp.net flash testing browser

我正在开发一个需要支持非Flash用户的ASP.NET网站。

如果用户的浏览器不支持Flash,或者他们禁用了Flash,我想将大型启动图像下载到浏览器。

但是,如果Flash 正确呈现,我不想浪费带宽下载。

因此可以从服务器端使用.NET代码测试浏览器是否支持闪存?我查看了“Request.Browser”对象,但找不到与Flash相关的任何内容。

6 个答案:

答案 0 :(得分:3)

您不应该在服务器端处理此问题。大多数Flash检测/嵌入脚本默认执行此类行为。我强烈推荐SWFObject

  • 使用您的图片(或任何您想要的HTML)创建<div>
  • 给它一个ID,例如:<div id="flash">
  • 告诉SWFObject使用Flash播放器覆盖该div块

如果他们已禁用,他们会看到未更改的HTML。如果他们启用了javascript但没有Flash插件,他们也会看到html。基本上,只有当他们有javascript和Flash插件时,他们才会看到Flash。

这和它一样好。

答案 1 :(得分:1)

您可以尝试使用某些服务器var:

'HTTP_ACCEPT' 反对 '应用程序/ x-冲击波闪光'

不确定.NET,但它大部分时间都在PHP中运行。这在Safari中不起作用,但对于你正在做的事情应该没问题。你将在95%的时间内为自己节省一些带宽。 PHP示例(不是.NET,但你明白了):

if (strstr($_SERVER['HTTP_ACCEPT'], 'application/x-shockwave-flash')){
    $hasFlash = true;
}

答案 2 :(得分:1)

根据您的要求,我最好使用Flash检测脚本来检测客户端上的Flash功能,并将用户重定向到另一个页面而不是下载SWF文件。您可以在Kirupa上找到许多脚本,也可以使用Flash发布选项对话框中生成的脚本

答案 3 :(得分:1)

客户端闪存检测可能是更好的方法。但是,请记住,您可能禁用了禁用JavaScript的用户,例如使用NoScript插件的用户。我有三个基本的选择来处理这个问题。

  1. 忽略它。也许你觉得人们在这种情况下不值得担心。

  2. 检查它,并有一个指示器,要求用户启用JS以获得更好的网站体验。这通常是通过在页面中显示通知,并使用JS代码来禁用或隐藏该元素的呈现来完成的。

  3. 尝试在没有JavaScript的情况下支持相当好的网站操作。这可能涉及默认情况下具有大图像加载,并在启动之前停止发生该加载。这可能很棘手。

答案 4 :(得分:1)

您确实需要检测服务器端的闪存。 如果闪光灯不可用,我们需要完全替换某些部件或将其遗漏在页面上。它不像在闪光灯的确切位置显示替代内容那么简单。我们需要进一步替换html结构。即使Javascript不可用,我们也需要这样做。让javascript重写页面,如果Flash可用,我们不能只是重定向到另一个页面。

答案 5 :(得分:0)

浏览器似乎没有发送

application/x-shockwave-flash
在Accept标头中。他们只发送*/*

IE似乎发送

x-flash-version

闪存请求有些愚蠢的原因......