【发布时间】:2010-10-31 19:30:34
【问题描述】:
我有一个 ASP.Net MVC 站点,我想在其中呈现一些自定义 HTML 5 画布。我遇到了一个奇怪的问题,即服务器提供了源代码中没有的额外字符。
为了在 IE 8 中使用 HTML 5 画布,您必须在 html 头中添加以下标记:
<!--[if IE]><script src="../../Scripts/excanvas.js"></script><![endif]-->
由于某种原因,它被用作:
<!--[if IE]>IE]><script src="../../Scripts/excanvas.js"></scr<![endif]-->
当然,duff 标记会导致 IE 无法加载 excanvas 脚本。我不明白为什么线路会乱码。我有以下文档类型,记录在 http://www.w3schools.com/html5/tag_doctype.asp:
<!DOCTYPE html>
我不熟悉使用 HTML 5 或新的文档类型,所以我对此表示怀疑。我也在使用 Mono 托管在 Apache 上,所以也许这就是乱码。
相关页面位于:http://openancestry.org/FamilyTree/Simpsons
任何人都见过这个或知道为什么我不能使用“if IE”语法?
更新: 好吧,我很确定它是 Mono 或 Apache 乱码 HTML,所以我使用了下面的解决方法,它为 IE8 添加了兼容性元标记,并为任何早于 IE9 的 IE 添加了 excanvas。 对于 HTML 为何出现乱码的任何答案,我仍将不胜感激。
<% if (Request.Browser.Browser.Contains("IE") && float.Parse(Request.Browser.Version) < 9) { %>
<% if (float.Parse(Request.Browser.Version) > 7) { %>
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<% } %>
<script type="text/javascript" src="../../Scripts/excanvas.js"></script>
<% } %>
【问题讨论】:
-
很奇怪。题外话:it looks like IE 9 is going to support the
<canvas>tag,因此您可能希望您的条件注释选择 IE 8 及更早版本。这应该可以工作(一旦服务器停止咀嚼它):<!--[if lte IE 8]><script src="../../Scripts/excanvas.js"></script><![endif]--> -
另外,请参考官方文档whatwg.org/specs/web-apps/current-work/multipage,千万不要使用W3schools。
-
@grenade,我使用了您在问题更新中提供的解决方案,谢谢。只是想指出,我在优胜美地上的以下 Mono for Apache 版本中遇到了同样的问题:Mono JIT 编译器版本 3.10.0(自首次提出问题以来 4 年!)
标签: asp.net-mvc html mono apache2 excanvas