IE不读取<script>标签,但刷新后工作正常



我有一个奇怪的bug,它只存在于IE(7/8/9/9CV)中。FF和Chrome没有这个问题。

我有一个很大很复杂的页面。在页面的底部,我有两段JavaScript代码,一段接一段。第一个没有问题,但由于某种原因,当我第一次加载页面时,第二个显示为文本。如果我只是刷新页面而不做任何其他事情,一切都会正常工作,看起来也很好。

服务器上从两个不同的pagelet生成了两段JS,所以我无法将它们放在一个脚本标记中。第一段JavaScript代码只不过是用不同的参数多次调用同一个函数,而第二段脚本只是一个类似JSON的对象的声明,该对象正被页面前面定义的另一个函数使用。

所以页面代码看起来像这样:

<!DOCTYPE html>
<html>
<head>
...
<title>...</title>
</head>
<body>
...
<script type="text/javascript">
//Some javascript that executes perfectly fine every time and is nothing more but just couple of calls to some function
someFunction("param1");
someFunction("param2");
someFunction("param3");
</script>
<script type="text/javascript">
var myObject = {"success":[{"header":"Form successfully submitted","messages":["Some message 1"]}]};
</script>
</body>
</html>

因此,当表单提交时,我会使用这个对象在页面上显示消息。但是,当用户提交表单并第一次打开页面时,我在页面底部看到:

var myObject= {"success":[{"header":"Form successfully submitted","messages":["Some message 1"]}]};

但当我刷新页面时,我没有看到代码,而是看到了显示该对象值的消息。

当我打开"开发人员工具"并导航到HTML选项卡时,我看到我的第二篇JS文章的标记显示为注释out!

<!-- sctipt ... -->

但如果我刷新页面,它会很好地工作,并且在开发人员工具的HTML选项卡中,它实际上显示为一个脚本节点,我可以展开它并查看Javascript代码。

有人知道这里发生了什么吗?!?!这个问题已经困扰我好几天了!

您应该更换

<script type="text/javascipt">

带有

<script type="text/javascript">

编辑:

HTML不是XHTML。不要将脚本包装在CDATA中。您的脚本元素应该简单如下:

<script type="text/javascript">
var t0_date = new Date();
...
</script>

同时更改这两项:

<script type="text/javascipt">

至:

<script type="text/javascript">

好吧,我找到了这个问题的答案。嗯,我想更多的是一个工作,因为这不是我所期望的,但它是有效的。

基本上,如果你把任何东西放在两个脚本元素之间——IE很好!所以我所做的是——我把br标签放在中间,现在它很好用。我不知道为什么。也许IE渲染引擎中存在一些奇怪的错误。

最终结果如下:

<script type="text/javascript">
//Some javascript that executes perfectly fine every time and is nothing more but just couple of calls to some function
someFunction("param1");
someFunction("param2");
someFunction("param3");
</script>
<br>
<script type="text/javascript">
var myObject = {"success":[{"header":"Form successfully submitted","messages":["Some message 1"]}]};
</script>

最新更新