IE 11 和 MathJax >2.3 的问题(原为:在 Internet Explorer 中以斜杠开头的 URL 失败)

Issues with IE 11 and MathJax >2.3 (was: URLs started by slash failing in Internet Explorer)

编辑:以下问题是由两个页面之间似乎唯一的区别提示的,一个工作正常但另一个工作不正常;请参阅下面我的回答。

似乎IE(至少11和12版本)不接受URL如

/a/b.js

用于

等语境
<script type="text/javascript" src="/a/b.js"></script>

对于如何避免此问题而无需使用 URL 形式

的任何帮助,我将不胜感激
http://somedomain/a/b.js

(不使用这个的原因是一些浏览器接受,例如,

xyz

意思

http://www.xyz

但随后通过错误地应用同源策略阻止使用以 URL 开头的资源作为最后一行)。

在此先感谢您的帮助!

我提出这个问题是因为在使用斜杠开头的 URL 的页面中存在问题,但在使用完整 URL 的类似页面中则没有。感谢@CBroe 的评论,经过更多测试后,现在很明显检测到的问题不是由 URL 中使用的语法引起的。相反,问题出在 IE(至少版本 11 和 12)上,它不会在某些页面(但不是所有页面)中呈现 MathJax 公式,有时,但即使是同一页面,也会在正确的页面中给出 JS 语法错误声明。

更新:在获得 MathJax 团队的 Peter Krautzberger 和 David Cervone (https://groups.google.com/forum/#!topic/mathjax-users/hTq9MxEVYI0) 的更多帮助和更多测试后,结论如下

  1. 大约一年前使用 MathJax 2.2 进行测试时,问题没有出现;自动更新 IE and/or MathJax 从 2.2 到 2.4 和 2.5.1 的变化导致它发生
  2. 问题是由页面中给出的 MathJax 配置引起的
    <script type="text/x-mathjax-config"> <!-- MathJax.Hub.Config({ ... }); --> </script> 而页面中的所有其他脚本,也使用 HTML 注释 分隔符以同样的方式,按预期工作
  3. 这些注释定界符用于隐藏脚本内容,特别是用于使用 W3C 标记验证器,但是

    • 结束 HTML 评论定界符应该是 在 Javascript 评论中,如 W3C HTML 4.01 TR 18.3.2 中所述 [1999](我不能 post 超过 2 个链接...) 但这并不能解决问题
    • 页面在 XHTML 1.0 中,而不是这些分隔符 代码应位于 CDATA 部分,即
      //<![CDATA[ ... //]]>
      (参见 When is a CDATA section necessary within a script tag?) 这解决了问题

  4. 另一种避免问题的方法是将 MathJax 配置放在一个文件中,该文件的 URI 在脚本的 "src" 属性中给出(type="text/javascript");文件内容不需要 HTML 注释,也不需要 CDATA 部分;必须使用 MathJax 配置的新语法,即对 window.MathJax 对象的赋值。
  5. 后者是首选解决方案,因为尽管在 XHTML 1.0 中,页面仍作为 HTML 提供,这使得分隔符的选择变得复杂; serving XHTML as HTML 只要遵循一些兼容性规则就没问题,请参阅关于 serving XHTML(概述)和 XHTML 1.0 TR 兼容性指南的 W3C 文章(同样,我不能 post 超过 2 个链接)