1

我一直在用 HTML5/Javascript 的新画布功能开发游戏,一切都很好,直到我开始在 Internet Explorer 9 上测试它。所以我会模糊地问,有没有什么技巧可以让游戏完全运行IE9?

这是我所知道的:

1)我必须包括

<!DOCTYPE html5>

否则 IE9 无法确定我确实打算使用 HTML5,而不是旧版本。

2) 必须明确告知 IE9 在 IE9 模式下运行,而不是在 IE8 模式下运行,因为显然每个升级到 IE9 的人都打算在默认情况下以 IE8 模式运行它。

3) .ttf 文件让 IE9 不开心。这是一个问题,因为在 IE9 上工作的字体文件(即 .eof)似乎被 Firefox 和其他真正的浏览器忽略了。有什么技巧可以解决这个问题吗?

4)最后,我最大的问题是,在完成所有其他工作之后:只有一些图形被绘制到屏幕上。简而言之,游戏的“引擎”分为几个系统。一些,比如粒子(基本上,只是移动球体的集合)被绘制,而其他的,比如所有的精灵,没有被绘制,但健康条被绘制。它们都使用相同的精确绘制方法,所以我真的无法理解为什么有些工作而有些不工作。有很多东西要画,但同样,真正的浏览器处理得很好。

我知道这很模糊,但我只是希望有人对此有一些经验,可以将我链接到适当的教程,或者给我一个关于如何解决这个问题的提示。这似乎是一个独立的项目,只是为了让 IE9 运行在 Firefox、Safari、Chrome 和 Opera 上完美运行的代码。谢谢,非常感谢所有帮助。

4

3 回答 3

2
  1. <!DOCTYPE html> 只告诉浏览器使用标准模式。HTML5 被构建为在浏览器支持的情况下优雅地失败。一个示例是 datepicker 输入,它在所有浏览器(支持它的 Opera 除外)上作为文本类型输入正常失败。

    DOCTYPE 在 HTML5 中保留为“大部分无用但必需的”标头,仅用于在普通浏览器中触发“标准模式”。

    doctype 不会告诉浏览器什么版本的 HTML。这就是 DTD 的工作。DTD只是告诉浏览器标记中的有效标记是什么。它仅用于验证以确定您使用的 HTML(HTML 或 XHTML;松散、过渡或严格)。在 HTML5 的情况下,没有 DTD,因为它没有用处。

  2. 您可以使用元命令强制 IE 以最新模式或 chrome 框架呈现,但这通常是不必要的。使用 doctype 声明严格模式以及使用适当的标记就足以完成这项工作。

    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    
  3. Paul Irish 的防弹@fontface 语法应该将您的字体置于“一体式”语法中,以便可以在所有浏览器上加载相同的代码。

  4. 我不了解你,但IE9+ 对画布有基本的支持和文本支持,这与那个时代的浏览器相当。IE 甚至有它自己的版本 9 及更高版本的测试页面来展示他们对 HTML5 的支持。你的代码一定有问题。

于 2012-05-07T06:05:20.977 回答
0

@Joseph 几乎回答了你的问题。对于 IE 中的画布支持,您可以尝试ExplorerCanvas。

于 2012-05-07T06:11:53.527 回答
0

我的 IE9已经支持HTML5 。这是一个例子。请务必在执行此操作时查看开发人员指南。

于 2012-05-07T06:14:00.007 回答