javascript - 一些常见的 JavaScript 问题

标签 javascript html

来自Flattr Javascript API description :

<script type="text/javascript">
<!--//--><![CDATA[//><!--

    (function() {
        var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];

        s.type = 'text/javascript';
        s.async = true;
        s.src = 'http://api.flattr.com/js/0.5.0/load.js';

        t.parentNode.insertBefore(s, t);
    })();

//--><!]]>
</script>

我对 <!--//--><![CDATA[//><!-- 有点好奇和//--><!]]> 。我想这是一些欺骗那些不理解 <script> 的旧浏览器的技巧。 -标签。但这不是 <!--足够的? CDATA到底是什么?的东西?如果我不关心旧浏览器,那么所有这些都已经过时了,对吗? (顺便说一句,是否有人知道任何浏览器,如果我不把这些东西放在那里,他们会感到困惑?)

然后我想知道函数的定义。为什么它在那里?为什么不直接调用代码呢?是为了不向全局 namespace 发送垃圾邮件吗?如果是这样,是否有更简单、更简单的方法来做到这一点,例如只需将代码放入 {}

最佳答案

这是黑客的组合,其中:

  • 应对 HTML 引入 script 元素之前的浏览器(十多年前)
  • 处理 XHTML 中包含 &、< 和 > 的 JavaScript
  • 当 XHTML 被视为 HTML 而不是 XHTML(即几乎总是)时,对 XHTML 解决方案进行补偿
  • 阻止其他黑客相互干扰

坦率地说,您可以(并且应该)忘记不理解的浏览器 <script> (注意,这与不支持 JS 不同,这意味着根本无法识别该元素,因此将其(有效地)视为 <span> )。如果您这样做并使用 XHTML,那么您可以只使用带有 JS 注释前缀的 CDATA 标志 ( // )。

您通常还应该避免使用 XHTML。除非您正在处理一个坚持生成 XHTML 的服务器端系统,并且将其转换为 HTML 比处理编写 HTML 兼容的 XHTML 的所有问题要花费更多的精力,否则 XHTML 几乎永远不值得付出代价。

如果您不使用 XHTML 或不关心甚至不支持 HTTP 1.1 的浏览器,那么您只需要脚本标记和脚本,根本不需要任何包装器。

在这个特定的示例中,您无论如何都不需要 CDATA 标志 - 脚本不包含任何在 XML 中具有特殊含义的字符,因此您不需要将这些字符视为文本而不是标记的指令.

关于javascript - 一些常见的 JavaScript 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484674/

相关文章:

javascript - 如何让点击div1时显示image1,点击div2时image2替换image1?

java - 如何使用带有 java 类值的 JSP 获取动态 href 标记

html - 为什么 `min-height` 会影响 flex 布局中 div 的高度?

javascript - 关闭弹出窗口时不会发生任何事件

javascript - 如何使用三个js使用体素生成器生成地形

javascript - 如何发起 1 by 1 ajax 请求

javascript - PHP通知: Trying to get property of non-object

html - 边框与框对齐

javascript - 使用最近查找文本输入的 JQuery 问题

javascript - 安装后 Moodle 3.7 无法正确加载