我有一个奇怪的错误,只存在于IE(7/8/9 / 9CV)中。 FF和Chrome没有这个问题。
我有一个非常大的复杂页面。在页面底部,我依次有两段JavaScript代码。第一个没有问题,但第二个由于某种原因在我第一次加载页面时显示为文本。如果我只是刷新页面而不做任何其他事情 - 一切正常并且看起来很好。
在服务器上从两个不同的小页面生成两个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文章的标签显示为已注释掉!
<!-- sctipt ... -->
但是如果我刷新页面 - 它工作正常,并且在开发人员工具的HTML选项卡中它实际显示为一个脚本节点,我可以展开并查看Javascript代码。
有谁知道这里发生了什么?!?!这个问题一直困扰着我好几天了!
答案 0 :(得分:4)
你应该替换
<script type="text/javascipt">
与
<script type="text/javascript">
编辑:
HTML不是XHTML。不要将脚本包装在CDATA中。你的脚本元素应该是这样的:
<script type="text/javascript">
var t0_date = new Date();
...
</script>
答案 1 :(得分:1)
更改这两项:
<script type="text/javascipt">
为:
<script type="text/javascript">
答案 2 :(得分:1)
好吧,我找到了这个问题的答案。好吧,我猜的更多是一项工作,因为这不是我预期的,但它确实有效。
基本上,如果你在两个脚本元素之间放置任何东西 - IE wokrs就好了! 所以我做的是 - 我把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>