我注意到IE10的行为异常。
我有一个具有以下内容的javascript文件:
var x = 1;
//@deprecated, use static version
var y=function(interval){
console.log(interval);
};
文件使用UTF-8编码。
我有一个带有meta标签的html文件
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
如果以前的文件是通过<script>
标签添加的,则可以使用。
如果我改为下载通过javascript创建脚本元素并将文件追加到文件头的文件:
var script = document.createElement('script'),
head = document.getElementsByTagName('head')[0];
script.type= 'application/javascript';
script.src = ''; // omissis
head.appendChild(script);
它适用于IE11,但不适用于IE10:抛出错误
(SCRIPT1004): expected ';'
奇怪的是:错误的行号和列号指向//@deprecated
之后的逗号:但这应该是注释,它不应引发任何错误。
顺便说一句:创建script标签并将其附加到头部的javascript对所有javascript文件和所有浏览器都有效。仅在文件中包含//@deprecated
注释时,它似乎才被破坏。
谢谢你,干杯
答案 0 :(得分:0)
好的,感谢@ Deepak-MSFT,我发现了错误。
该错误是由代码段执行之前 加载的另一个脚本引起的。
在此脚本中,存在代码/ @cc_on!@ /,该代码可激活IE(<11)浏览器的条件编译标志。这是与此有关的另一个堆栈溢出问题:
what does this comment /*@cc_on!@*/0 do inside an if statement in javascript?
如果我注释掉该行,问题就会消失。
感谢@ Deepak-MSFT,因为他试图通过执行我指示的步骤来重现该问题-这是我的错,因为我描述了在不亲自进行测试的情况下重现该问题的最少步骤。