JS中用于网站的语法错误"闪烁"修复

时间:2015-08-15 00:47:36

标签: javascript php html syntax flashing

  1  if (document.getElementById) {
  2  document.write(
  3  '<style type="text/css" media="screen">
  4  #element1, .element2 {display:none;}
  5  </style>'
  6  );
  7  }

我得到&#34; 未捕获的SyntaxError:意外的令牌ILLEGAL &#34;在第3行。这对你们来说可能很容易,但我刚开始使用JS并且总是喜欢它 - 它是一种全新的语言。

如果他们不同,我可以使用两种建议。

  1. 如何在file.php之间使用此代码&lt;脚本&gt;标签?
  2. 如何从单独的file.js文件中使用此代码?
  3. 我知道如何链接.js,不要担心。

    为了记录,这是打算在&lt;头&gt;并且如果我没有弄错的话,在它们完全加载之前隐藏一些html元素。 专家,如果有任何问题,请随时确认或给我一个更好的解决方案,谢谢!

1 个答案:

答案 0 :(得分:1)

在JavaScript中,字符串不能分成多行。新行字符不是有效的字符串字符。您必须关闭每一行上的字符串,并在下一行继续的每一行之后(或在前一行的延续的每一行之前)添加字符串连接运算符,如下所示:

if (document.getElementById)
{
    document.write(
        '<style type="text/css" media="screen">' +
        '#element1, .element2 {display:none;}'
        + '</style>');
}

这将消除错误,但它不会达到隐藏元素的预期效果。 document.write automatically calls document.open()如果已经打开了一个HTML文档(如果脚本正在执行,它已经有了。)document.open将清除页面内容,包括包含该文档的脚本码。您将留下一个空白页面。

正如@Chris所说,只需在php解析上下文之外编写脚本,就可以在php脚本的输出中包含脚本标记。即。

?>
<head>
<!-- other stuff -->
<script type="text/javascript">// type="text/javascript" is only needed for browser versions that do not support HTML5
// place code here
</script>
<!-- other stuff -->
</head>
<?php

另一方面,如果您希望包含单独的外部JavaScript文件,请使用

替换上面代码段中的脚本标记
<script src="[absolute or relative path to script]" type="text/javascript">
</script>

请注意,脚本标记不是自动关闭的,因此即使此脚本标记没有内容,也不能使用自我结束标记语法,如<script ... />

至于如何处理闪烁问题的问题,这个Stack Overflow帖子可能会有所帮助:

Page Transitioning - Ways to Avoid the "flicker"