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) 的更多帮助和更多测试后,结论如下
- 大约一年前使用 MathJax 2.2 进行测试时,问题没有出现;自动更新 IE and/or MathJax 从 2.2 到 2.4 和 2.5.1 的变化导致它发生
- 问题是由页面中给出的 MathJax 配置引起的
<script type="text/x-mathjax-config">
<!--
MathJax.Hub.Config({ ... });
-->
</script>
而页面中的所有其他脚本,也使用 HTML 注释
分隔符以同样的方式,按预期工作
- 这些注释定界符用于隐藏脚本内容,特别是用于使用 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?)
这解决了问题
- 另一种避免问题的方法是将 MathJax 配置放在一个文件中,该文件的 URI 在脚本的 "src" 属性中给出(
type="text/javascript"
);文件内容不需要 HTML 注释,也不需要 CDATA 部分;必须使用 MathJax 配置的新语法,即对 window.MathJax 对象的赋值。
- 后者是首选解决方案,因为尽管在 XHTML 1.0 中,页面仍作为 HTML 提供,这使得分隔符的选择变得复杂; serving XHTML as HTML 只要遵循一些兼容性规则就没问题,请参阅关于 serving XHTML(概述)和 XHTML 1.0 TR 兼容性指南的 W3C 文章(同样,我不能 post 超过 2 个链接)
编辑:以下问题是由两个页面之间似乎唯一的区别提示的,一个工作正常但另一个工作不正常;请参阅下面我的回答。
似乎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) 的更多帮助和更多测试后,结论如下
- 大约一年前使用 MathJax 2.2 进行测试时,问题没有出现;自动更新 IE and/or MathJax 从 2.2 到 2.4 和 2.5.1 的变化导致它发生
- 问题是由页面中给出的 MathJax 配置引起的
<script type="text/x-mathjax-config"> <!-- MathJax.Hub.Config({ ... }); --> </script>
而页面中的所有其他脚本,也使用 HTML 注释 分隔符以同样的方式,按预期工作 - 这些注释定界符用于隐藏脚本内容,特别是用于使用 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?) 这解决了问题
- 另一种避免问题的方法是将 MathJax 配置放在一个文件中,该文件的 URI 在脚本的 "src" 属性中给出(
type="text/javascript"
);文件内容不需要 HTML 注释,也不需要 CDATA 部分;必须使用 MathJax 配置的新语法,即对 window.MathJax 对象的赋值。 - 后者是首选解决方案,因为尽管在 XHTML 1.0 中,页面仍作为 HTML 提供,这使得分隔符的选择变得复杂; serving XHTML as HTML 只要遵循一些兼容性规则就没问题,请参阅关于 serving XHTML(概述)和 XHTML 1.0 TR 兼容性指南的 W3C 文章(同样,我不能 post 超过 2 个链接)