非IE浏览器是否会在type =“text / jscript”的标签内使用脚本?

时间:2011-08-03 22:38:34

标签: javascript html

我继承了一个古老的代码库,其中包含<script type="text/jscript">的页面 - 是的,我的生活真的很糟糕。脚本似乎在现代的,不错的浏览器(FF和Chrome,一开始)中什么都不做,我想知道所声明的脚本类型是否导致它被忽略。我花了一些时间试图弄清楚发生了什么,我看到像

这样的东西
  

正如JavaScript大师道格拉斯·克罗克福德在题为“YUI Theatre上的JavaScript编程语言”的演讲中所解释的那样,“[微软]不想与Sun讨论商标问题,所以他们称他们的实现是JScript。很多人我认为JScript和JavaScript是不同但类似的语言。事实并非如此。它们只是同一种语言的不同名称,而名称不同的原因是为了解决商标问题。“

维基百科上的

。那么Javascript == JScript?但是,我看到了相互矛盾的信息,比如this answer,它似乎暗示声明为JScript的脚本只能在IE中运行。

所以:我可以只更改类型标签,一切都会正常工作吗?有一个简单的转换过程吗?如果没有,我可能会废弃整个事情并重新开始。

5 个答案:

答案 0 :(得分:4)

来自HTML 5 chapter 4.3

  

7)如果用户代理不支持此脚本元素的脚本块类型给出的脚本语言,则用户代理必须在此时中止这些步骤。该脚本未执行。

同一章也说

  

如果:

     
      
  • script元素具有type属性,其值为空字符串,或
  •   
  • script元素没有type属性,但它有一个language属性,该属性的值是空字符串,或者
  •   
  • 脚本元素既没有type属性也没有language属性,那么
  •   
     

...让脚本块的此脚本元素的类型为"text/javascript"

所以我只需删除type="text/jscript",节省一点带宽,然后过上幸福的生活。

答案 1 :(得分:2)

您链接的其他答案完全不正确。 JScript和JavaScript之间没有区别。将脚本类型更改为“text / javascript”应该有效(除非作者的意图是强制它以便只有IE运行脚本)

答案 2 :(得分:2)

  

那么Javascript == JScript?

JScript就是微软称之为JavaScript的东西

  

但是,我看到了相互矛盾的信息,比如这个答案似乎暗示声明为JScript的脚本只会在IE中运行。

这不冲突。这只是意味着其他浏览器无法识别mime类型。

浏览器将忽略具有他们无法识别的类型的脚本元素。 text/jscriptnon-standard,大多数浏览器都无法识别它(Internet Explorer认为它是text/javascript的别名)。

  

我可以更改类型标签,一切都会正常工作吗?

可能。该脚本可能依赖于其他专有的Microsoft-isms(例如document.all)或其他非标准行为(JS全局转换的自动id属性或将缺少单位的CSS长度视为像素)

答案 3 :(得分:1)

类型=要求已从html5中取出。我相信正确的xhtml代码将是......

<script type="text/javascript">
<![CDATA[
// content of your Javascript goes here
]]>
</script>

...但是浏览器没有遵循强制错误的xhtml要求。大多数Web主机将xhtml和html文档的交付保持为MIME类型“text / html”,而不是“application / xhtml + xml”,如果xhtml不验证,则会强制出错。

HTML4使用各种类型... http://www.w3.org/TR/html4/interact/scripts.html ...但浏览器不强制执行html4验证。

vscript,tcl没有共同支持 - 我们谈论的是Javascript或其获得的任何其他名称,因为它变得更强大。

答案 4 :(得分:0)

虚假的“类型”属性肯定会使脚本不起作用。浏览器认为你基本上不希望它运行脚本。

实际上,除非您确实希望浏览器运行脚本(当人们的“脚本”实际上是模板主体或其他数据时,人们会这样做),否则不需要“type”属性像那样)。您可以将您的所有内容更改为“text / javascript”,也可以完全删除该属性。