Javascript 是否仍应“隐藏”?在 HTML 注释标签中?

发布于 2024-10-11 09:56:46 字数 418 浏览 6 评论 0原文

我最近继承了一些 Web 代码,发现所有 Java Script 脚本都包含在 HTML 注释标记中

例如:

<script type="text/javascript" language="javascript"><!--
    function ValidateForm() { ... }//-->

据我了解,此方法阻止较旧的、不受支持的浏览器解释您的 Java Script。然而,这不是我曾经被教导要做的事情,我想知道现在是否认为这是不必要的,或者这仍然是一种常见的做法?如果是这样,为什么?


更新:感谢kennebec提出的将它们保留在其中的建议,我现在已经这样做了,同时也感谢Emmett:我一定会把它们保留在我将来编写的任何代码中!

I have recently inherited some web code and found that all the Java Script scripts are contained within HTML comment tags

For example:

<script type="text/javascript" language="javascript"><!--
    function ValidateForm() { ... }//-->

As I understand it, this method prevented older, non-supported, browsers from interpreting your Java Script. However this is not something I was ever taught to do, and I wonder if this is now considered to be unnecessary, or is this still a common practice? If so, why?


Update: Thanks to kennebec for your advice to leave them in, which I have done for now, and thanks to Emmett also: I'll be sure to leave them out of any future code I write!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

源来凯始玺欢你 2024-10-18 09:56:46

http://javascript.crockford.com/script.html

请勿使用 黑客
脚本。其目的是为了防止
脚本以文本形式显示在
第一代浏览器 Netscape 1
和马赛克。没有必要
多年。 应该是
发出 HTML 注释信号。评论
应该被忽略,而不是编译和
被执行。另外,HTML 注释不
包括 --,所以一个脚本
decrements 有 HTML 错误。

http://javascript.crockford.com/script.html:

Do not use the <!-- //--> hack with
scripts. It was intended to prevent
scripts from showing up as text on the
first generation browsers Netscape 1
and Mosaic. It has not been necessary
for many years. <!-- //--> is supposed
to signal an HTML comment. Comments
should be ignored, not compiled and
executed. Also, HTML comments are not
to include --, so a script that
decrements has an HTML error.

鼻尖触碰 2024-10-18 09:56:46

这是因为 XHTML 验证器。 js 代码周围的 HTML 注释应使用外部标签。验证器应该查看你的 html,而不是你的 js。

强烈推荐这篇文字
https://developer.mozilla.org/en/properly_using_css_and_javascript_in_xhtml_documents
关于这个主题的所有内容都在哪里。

It is because of XHTML validator. HTML comments around js code should used outside tag. The validator is supposed to look at your html, not your js.

I strongly recommended this text
https://developer.mozilla.org/en/properly_using_css_and_javascript_in_xhtml_documents
where is everything about this topic.

空城之時有危險 2024-10-18 09:56:46

我的网站是XHTML 1.1,也就是XML。

我的 JavaScript 被封装在
// 和 //]]>,如果存在 XML 实体(例如 '&'、'<' 或'>')在代码中。

My website is XHTML 1.1, which is XML.

My JavaScript is wrapped in
//<![CDATA[ and //]]>, if there is an XML entity (such as '&', '<', or '>') in the code.

别忘他 2024-10-18 09:56:46

时,删除

例如,

<script><!--
function containsScriptEndTag(s) {
  return s.indexOf('</script>') >= 0;
}
//-->
</script>

如果没有 ,将以不同的方式进行解析。

因此,请继续删除它们,但先检查一下。

顺便说一句,在 script 元素内,它们不被称为“注释”,它们被称为“转义文本跨度”。
来自 http://www.w3.org/ TR/2009/WD-html5-20090423/syntax.html#syntax-escape

转义文本范围是
以转义文本开头的文本
跨度起点本身不在
转义文本范围,并结束于
下一个转义文本跨度结束。那里
不能是任何字符引用
在转义文本范围内 -
的字符序列
看起来字符引用没有
有特殊意义。

转义文本范围的开头是一部分
由四个组成的文本
字符序列”

转义文本范围结束是以下内容的一部分
由三部分组成的文本
字符序列“-->” (U+002D
连字符减号、U+002D 连字符减号、
U+003E 大于符号)其 U+003E
大于号 (>)。

转义文本范围开头可能会共享
其 U+002D 连字符减号字符
及其相应的转义文本
跨度结束。

Removing the <!-- could cause a script to fail when there is a </script as part of the program text inside the <!-- ... -->.

For example,

<script><!--
function containsScriptEndTag(s) {
  return s.indexOf('</script>') >= 0;
}
//-->
</script>

will parse differently without the <!-- ... -->.

So go ahead and remove them, but check first.

Btw, inside script elements, they're not called "comments", they're called "escaping text spans".
From http://www.w3.org/TR/2009/WD-html5-20090423/syntax.html#syntax-escape

An escaping text span is a span of
text that starts with an escaping text
span start that is not itself in an
escaping text span, and ends at the
next escaping text span end. There
cannot be any character references
inside an escaping text span —
sequences of characters that would
look like character references do not
have special meaning.

An escaping text span start is a part
of text that consists of the four
character sequence "

An escaping text span end is a part of
text that consists of the three
character sequence "-->" (U+002D
HYPHEN-MINUS, U+002D HYPHEN-MINUS,
U+003E GREATER-THAN SIGN) whose U+003E
GREATER-THAN SIGN (>).

An escaping text span start may share
its U+002D HYPHEN-MINUS characters
with its corresponding escaping text
span end.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文