【问题标题】:Why doesn't IE8 recognize type="application/javascript" in a script tag?为什么 IE8 不能识别脚本标签中的 type="application/javascript"?
【发布时间】:2009-08-17 14:30:05
【问题描述】:

我开发了一个使用 jQuery 和 Ajax 的 HTML 页面。我的<head> 标签中有以下几行:

<script language="javascript" type="application/javascript" src="script/jquery.js"></script>
<script language="javascript" type="application/javascript">
    function someFunction() {
        some code;
    }
</script>
    ...

  later - down in the body tag:
<a href="javascript:someFunction();">click here</a>

它在 FF 和 Chrome 中运行良好,但在我单击链接后立即在 IE8 中抛出“预期对象”。即使打开脚本调试器,它也无法到达函数的第一行。
我尝试切换到 IE7 模式或 IE8 兼容模式 - 无济于事。

我很幸运,通过谷歌发现了一个问题,有人建议将&lt;script&gt; 标记中的type 更改为"text/javascript",现在它适用于所有3 个浏览器。

我的问题是:我做错了什么? "text/javascript""application/javascript" 好,还是有更好(== 更正确)的解决方案来解决我的问题?

【问题讨论】:

  • 感谢所有正确答案 - 必须选择一个。如果可以的话,会把它们都标记为正确的:)
  • 我在将纯 FF 的 web 应用程序移植到 IE 时偶然发现了这个小问题。为什么 IE 必须是一个糟糕的浏览器

标签: javascript internet-explorer-8


【解决方案1】:

"text/javascript" 是所有三种浏览器都支持的唯一类型。但是,您实际上不需要输入类型。如果没有另外指定,脚本标签的 type 属性将默认为“text/javascript”。这将如何影响验证,我不确定。但这真的很重要吗?

【讨论】:

  • 如果你把它关掉,验证器肯定会抱怨
  • @TimSeguine 取决于文档类型。在 HTML5 中,没有 type 属性一切都很好。
【解决方案2】:

简单的回答是IE不支持application/javascript的type值。推荐它的 RFC 4329 显然是在 IE6 发布之后出现的,我猜 MS 开发人员甚至觉得没有必要支持 MIME 类型。

【讨论】:

  • 确实如此。有一些关于是否应该改变的讨论,但显然这会让开发人员很容易在不经意间构建无法在全球 60% 以上的浏览器中运行的网站。
  • 最近已经有点不到全球浏览器的 60%。耶!
  • 真正奇怪的是应用程序/javascript RFC 于 2006 年问世,而 IE8 于 2009 年问世。我想这是他们旧的网络战略断裂的一部分,但随着浏览器份额的下滑,他们现在真的要深陷其中了。谢谢 chrome 和 firefox!
猜你喜欢
  • 2021-10-15
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 2011-08-13
  • 2010-09-16
相关资源
最近更新 更多