相关疑难解决方法(0)

脚本标记中何时需要CDATA部分?

在脚本标签中是否有必要使用CDATA标签,如果是这样的话?

换句话说,何时何地:

<script type="text/javascript">
//<![CDATA[
...code...
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)

比这更好:

<script type="text/javascript">
...code...
</script>
Run Code Online (Sandbox Code Playgroud)

html javascript xhtml cdata

887
推荐指数
13
解决办法
34万
查看次数

在JavaScript块上使用HTML注释仍然有意义吗?

过去,人们习惯在JavaScript块周围包装HTML注释标签,以防止"旧"浏览器显示脚本.即使是Lynx也足够聪明,可以忽略JavaScript,那么为什么有些人会继续这样做呢?这些天有没有正当理由?

<script type="text/javascript">
<!--
//some js code
//-->
</script>
Run Code Online (Sandbox Code Playgroud)

编辑:我遇到过一种情况.某些代码编辑器(如Dreamweaver)在"设计视图"中时会被JavaScript字符串中的引用HTML弄糊涂,并尝试将其显示为页面的一部分.

html javascript

66
推荐指数
4
解决办法
2172
查看次数

<script> <! - // - > </ script>有现代用途吗?

我正在审查一些外部商店制作的HTML.

他们在外部脚本加载标签中使用注释 - 据我所知,这只适用于非常旧的javascript unaware浏览器是否有任何现代功能或者它是多余的?

<script type="text/javascript" src="path/to/file.js"><!--//--></script>  
Run Code Online (Sandbox Code Playgroud)

html javascript

10
推荐指数
1
解决办法
132
查看次数

为什么<! - 不会抛出语法错误?

我在一些遗留代码中注意到以下模式:

<script>
    <!--
    // code
    // -->
</script>
Run Code Online (Sandbox Code Playgroud)

经过一些研究,这似乎是一种非常古老的技术,用于在浏览器不支持该<script>元素时从DOM中隐藏脚本元素的内容.更多信息可以在这里找到.

我担心的是:为什么不<!--抛出语法错误?我在whatwg.org的网站上发现了它<!--应该在功能上等同于//它,并且它链接到ECMAScript语法中关于注释的片段.问题是,<!--该语法根本没有定义.

所以这似乎是所有主流浏览器都会实现的未定义行为.是否有允许这样的规范,或者这是一个人们提出的向后兼容性黑客攻击?

javascript syntax standards grammar

9
推荐指数
1
解决办法
155
查看次数

是<! - 有效的JavaScript?

我最近不得不修复有时在Internet Explorer中出现的错误.错误是,有时候,解析器会像代码一样窒息

<script type="text/javascript">
 <!-- // comments -->
/*...*/
</script>
Run Code Online (Sandbox Code Playgroud)

我们通过更正评论来修复.我的问题是:是" <!--"有效的JavaScript代码,还是没有?我尝试用firebug测试它,它只说"Undefined".JSFiddle没有动摇.IE有时只会在它上面窒息(重新加载有问题的页面会显示所涉及的脚本的结果).

虽然知道,由于历史原因,js中的HTML注释可能是有效的,具体取决于它的确切位置和月相确实有用,我更感兴趣的答案,如"var <!--foo是有效的js代码,但<!--它自己不是.原因如下:......"

我在萤火虫中做了一些分析:

var x = 2;
var y = 3;
var z = 0;
console.log(x);
console.log(y);

y<!--x;
console.log(x);
console.log(y);

z = y<! --x;
console.log(x);
console.log(y);
console.log(z);
Run Code Online (Sandbox Code Playgroud)

导致以下结果:

2
3
2
3
1
3
false
Run Code Online (Sandbox Code Playgroud)

第一次尝试和第二次尝试之间的区别很有趣.

然后我试过了

z = (y <!--x);
console.log(z);
Run Code Online (Sandbox Code Playgroud)

哪个失败了

SyntaxError: missing ) in parenthetical
Run Code Online (Sandbox Code Playgroud)

javascript

1
推荐指数
2
解决办法
278
查看次数

标签 统计

javascript ×5

html ×3

cdata ×1

grammar ×1

standards ×1

syntax ×1

xhtml ×1