我正在开发一个需要支持非Flash用户的ASP.NET网站。
如果用户的浏览器不支持Flash,或者他们禁用了Flash,我想将大型启动图像下载到浏览器。
但是,如果Flash 正确呈现,我不想浪费带宽下载。
因此可以从服务器端使用.NET代码测试浏览器是否支持闪存?我查看了“Request.Browser”对象,但找不到与Flash相关的任何内容。
答案 0 :(得分:3)
您不应该在服务器端处理此问题。大多数Flash检测/嵌入脚本默认执行此类行为。我强烈推荐SWFObject。
<div>
<div id="flash">
如果他们已禁用,他们会看到未更改的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插件的用户。我有三个基本的选择来处理这个问题。
忽略它。也许你觉得人们在这种情况下不值得担心。
检查它,并有一个指示器,要求用户启用JS以获得更好的网站体验。这通常是通过在页面中显示通知,并使用JS代码来禁用或隐藏该元素的呈现来完成的。
尝试在没有JavaScript的情况下支持相当好的网站操作。这可能涉及默认情况下具有大图像加载,并在启动之前停止发生该加载。这可能很棘手。
答案 4 :(得分:1)
您确实需要检测服务器端的闪存。 如果闪光灯不可用,我们需要完全替换某些部件或将其遗漏在页面上。它不像在闪光灯的确切位置显示替代内容那么简单。我们需要进一步替换html结构。即使Javascript不可用,我们也需要这样做。让javascript重写页面,如果Flash可用,我们不能只是重定向到另一个页面。
答案 5 :(得分:0)
浏览器似乎没有发送
application/x-shockwave-flash
*/*
IE似乎发送
x-flash-version
闪存请求有些愚蠢的原因......