有没有办法检测浏览器是否具有SVG功能服务器端?我知道如何在客户端上做到这一点,但我想在浏览器上检测它。ASP.NET检测SVG功能服务器端
2
A
回答
3
服务器端浏览器检测或功能检测是出了名的错误。
在服务器上用户拥有的浏览器的唯一可见性是用户代理字符串。
不幸的是,这是完全不可靠的,因为它可以被客户欺骗。由于各种防火墙和安全产品的原因,它也经常被隐藏起来,一些代理也会修改或删除它。
简而言之,没有可靠的方法从服务器检测浏览器。
我对你有两个建议:
1)使用AJAX方法。正常情况下(使用Modernizr或您最喜欢的其他技术)在Javascript中检测功能,然后将检测结果发送回服务器。如果用户真的想要这样做,它仍然可以被拦截和欺骗,但是不太可能,并且肯定会解决我用防火墙和代理描述的问题。
2)为什么关心SVG的支持,当唯一不支持它的浏览器是IE8(或更低)? IE支持VML,而且有许多Javascript工具可用于将SVG转换为VML,因此使用SVG的应用程序可以在所有浏览器中运行。我最喜欢的是Raphael,但拉斐尔是绘制图形的库;既然你已经有了SVG,你可能会发现一个简单的转换库更有用。像这样的东西,或许:http://code.google.com/p/svg2vml/或者这个:http://code.google.com/p/svgweb/
希望有帮助。
相关问题
- 1. 在服务器端测试Flash功能
- 2. 客户端 - 服务器功能测试
- 3. 功能检测支持svg过滤器
- 4. 检测Silverlight服务器端
- 5. 如何从客户端调用服务器端的功能 - asp.net
- 6. 在ASP.NET中检测Web服务性能
- 7. SVG中的foreignObject功能检测
- 8. 对象检测 - 服务器端 - 技术
- 9. 服务器端设备检测
- 10. 检测服务器端启用的Javascript
- 11. Perl服务器端跨域检测
- 12. 检测服务器端的TimeoutException WCF
- 13. htaccess的服务器端WEBP检测
- 14. 检测硬件更改服务器端
- 15. 检测浏览器/版本与JavaScript与检测服务器端?
- 16. asp.net web表单C# - 服务器端功能
- 17. 服务器端功能/ JS SDK的
- 18. 绑定服务器端功能
- 19. 调用JavaScript功能服务器端
- 20. 调用服务器端功能
- 21. boost :: asio服务器 - 检测服务器端口失败
- 22. Symfony2功能测试客户端强制服务器参数SERVER_NAME
- 23. 服务器端性能测试
- 24. 你能检测到服务器端的HTML 5 History API吗?
- 25. 功能测试服务
- 26. 浏览器检测与功能检测
- 27. SVG到服务器端的JSON?
- 28. GetElementByID在服务器端,asp.net?
- 29. 服务器端验证asp.net
- 30. asp.net下拉服务器端
这是因为我使用的图表库无法对SVG和VML使用相同的格式代码。所以如果我在一个上看起来不错,那么看起来就不好。所以为了解决这个问题,我想检测他们是否有SVG,然后使用备用样式。我无法使用Ajax,因为我需要在第一页渲染时执行操作。看起来我必须检测浏览器。 – KingOfHypocrites 2011-06-02 18:25:02
@King:我想我会建议使用更好的制图库,如Raphael(及其姐妹制图库g.Raphael),它使SVG/VML翻译变得透明。但是听起来你已经在一段不同的路上走了一段距离,所以便宜的答案只是检测IE8并降低,并希望你的用户为你提供有效的UA。 – Spudley 2011-06-03 07:51:44
尽管如果他们想要的话,几个Android设备也不支持SVG(他们选择不用它们来节省内存使用)。所以说普通的浏览器都支持SVG或VML是不公平的。有时你必须回退到服务器渲染的PNG图像。 – 2011-12-24 17:23:04